Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    4

    XSL come contare i caratteri?

    Sto parlando di xmlt-fo per avere come risultato un PDF Acrobat.

    Problema: ho un xml con un numero di annunci variabile.
    Devo conoscere il numero delle battute per stabilire il corpo del testo per ogni colonna, e le colonne del layout sono tre.

    Ho risolto come dividere sulle tre colonne gli annunci, ma non riesco a capire come fare per avere "la conta" delle battute su ogni colonna. Pensavo al comando concat ma di quali annunci dato che non ne conosco la quantità su xml?

    Forse un "ciclo" mi potrebbe aiutare... ma come faccio?

    :d :d

  2. #2
    La prima cosa che mi viene in mente è di scrivere un ciclo ricorsivo che sia un ibrido tra questi due:
    - contatore:
    <xsl:call-template name="increment">
    <xsl:with-param name="init" select="1"/>
    <xsl:with-param name="final" select="20"/>
    <xsl:with-param name="inc" select="1"/>
    </xsl:call-template>

    <xsl:template name="increment">
    <xslaram name="init"/>
    <xslaram name="final"/>
    <xslaram name="inc"/>
    <xsl:if test="$init &lt;= $final">
    <xsl:value-of select="$init"/>

    <xsl:call-template name="increment">
    <xsl:with-param name="init" select="$init+$inc"/>
    <xsl:with-param name="inc" select="$inc"/>
    <xsl:with-param name="final" select="$final"/>
    </xsl:call-template>
    </xsl:if>
    </xsl:template>


    - stampa i caratteri in verticale:
    <xsl:call-template name="vert">
    <xsl:with-param name="desc" select="********"/>
    <xsl:call-template>

    <xsl:template name="vert">
    <xslaram name="desc"/>
    <xsl:if test="string-length($desc) &gt; 0">
    <xsl:value-of select="substring($desc,1,1)"/>

    <xsl:call-template name="vert">
    <xsl:with-param name="desc" select="substring($desc,2,string-length($desc))"/>
    </xsl:call-template>
    </xsl:if>
    </xsl:template>

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    106
    Prova con la funzione XSL string-length (stringa), in questo caso ritorna il numero dei caratteri della stringa passata.

    cezar

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    4
    grazie Diego++ provero' e ti faro' sapere...
    cezar, grazie anche a te... ma il prob e' che non ho una stringa di testo ma un numero variabile che devo dividere per tre colonne

  5. #5
    La funzione che conta il numero di caratteri di una stringa (tag, attributo o variabile che sia) è string-length, il mio codice ti potrebbe servire per fare delle operazioni più complicate sulle stringhe, o comunque sono interessanti.

    "ma il prob e' che non ho una stringa di testo ma un numero variabile che devo dividere per tre colonne"

    Scusa non ho capito che intendi dire...

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    4

    x diego++

    spiego meglio.
    ho un xml con un numero variabile di stringhe che vanno da un minimo di 9 ad un massimo di 27.

    Devo creare una pagina in pdf quindi il corpo del carattere deve essere tale da non lasciare spazi eccessivi in basso (dato che ho allineato al top). Per fare questo e' necessario per me conoscere il numero di battute per colonna (ovvero: totale stringhe/3, dove il totale stringhe e' come ricorderai variabile) per poi assegnare il corpo del carattere. Le tre colonne potranno avere corpi diversi tra loro ma uguali sulla stessa colonna.

    In sostanza il problema e come fare ad avere il totale delle battute per ogni colonna.

    Spero di essere stato piu' chiaro...

    Grazie

  7. #7
    Si si ora ho capito: devi contare le parole e non i caratteri.
    Perchè non usi una procedura ricorsiva che conta gli spazi tra due parole?

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    4
    in realta' mi serve conoscere i caratteri.. perche' e' il sistema che con minor approssimazione mi da' la possibilita' di identificare lo spazio che occupa un testo, anche se.. come puoi immaginare un testo in maiscolo o minuscolo occupa spazio diverso..

    poi c'e' il problema degli "accapo".. non essendo un word processor le parlole non le sillaba.

    Aggiungi il fatto che le "o" le "m" ect. occupano il doppio spazio delle "i" e hai compreso come poco sia possibile effettuare una composizione automatica piacevole.

    Che tu sappia esiste una soluzione tipo.. "giustificazione forzata"?

    Credo che non ne usciro' facilmente.

    Cmq grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.