Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di sappe
    Registrato dal
    May 2011
    Messaggi
    19

    [XSL] selezionare punto specifico in un file xml senza modificare l'xml stesso

    Salve a tutti.
    Sto cercando di capire, per un progetto, come potrei selezionare l'ultimo elemento di body per poter stampare delle scritte subito dopo.
    Ci sto provando con
    codice:
    <xsl:template match="tei:body">
     <xsl:if test="position()=last()">
      <xsl:call-template name="mioTemplate"/>
     </xsl:if>
    </xsl:template>
    ed inserendo successivamente un template che stampa ciò che deve stampare, ma ovviamente potrei star sbagliando la logica dell'operazione.
    Quello che io voglio fare è: prendere in esame "body", selezionare il suo ultimo elemento, e scrivere subito dopo di esso, dentro "body" quindi.
    Spero di essermi spiegata a sufficienza, vi ringrazio in anticipo per aiuti o anche solo pareri.

  2. #2
    ciao,
    mi posti la tua struttura cosi che possa capire meglio ?
    non sei distante dalla soluzione se è come penso io comunque

  3. #3
    Utente di HTML.it L'avatar di sappe
    Registrato dal
    May 2011
    Messaggi
    19
    Sono arrivata alla conclusione che non devo selezionare l'ultimo elemento di body, ma devo scrivere subito dopo body, perché il testo che devo inserire viene messo dentro back!
    Inoltre mi sa che stavo sbagliando... Non mi serve di richiamare il template forse, non sono sicura.
    La questione è che devo inserire del testo, in modalità preflight, dentro il mio file xml, prima che inizi la sua trasformazione xsl.
    Allora io, dentro il mio template, devo indicare il punto esatto dove deve scrivere il codice, quindi forse sarebbe più opportuna una funzione.
    Perché quello che stavo facendo era: scrivere il mio template nel file dei procedimenti preflight, richiamarlo nel file dove applica le trasformazioni, e qui indicare dove deve stamparlo.
    Ma se sta agendo in modalità preflight, quindi prima di applicare la trasformazione, non dovrebbe essere necessario richiamarlo nell'altro file (perché dovrebbe inserirlo nel file xml in modalità prelight!).
    A questo punto cambia il mio problema. Sto cercando di capire come costruire una funzione che scriva subito dopo body, ma non riesco a capire come scriverne una!
    O forse va bene anche usare il template, e scrivere qualcosa del genere:
    codice:
    <xsl:template match="tei:body">
    <xsl:choose>
    <xsl:when test="position()=last()">
    <back>
    <div type="mioTemplate">
    miaSelezione:
    <xsl:apply-templates select="quello che voglio selezionare">
    <xsl:sort order="ascending">
    
    
    
    <xsl:value-of select="."/>
    </p>
    </xsl:sort>
    </xsl:apply-templates>
    </div>
    </back>
    </xsl:when>
    <xsl:otherwise>
    </xsl:otherwise>
    </xsl:choose>
    </xsl:template>
    Solo che se provo a fare così molto semplicemente non mi stampa nel file di output tutto il body.
    Mi sta venendo il dubbio in quest'istante che forse dovrei specificare il file sulla quale questa parte di codice deve lavorare, perché sto modificando un file che ne prende in esami molti altri... E forse è per questo che fallisce. Mi sto attorcigliando da sola

  4. #4
    Utente di HTML.it L'avatar di sappe
    Registrato dal
    May 2011
    Messaggi
    19
    Faccio un'aggiunta: ho inserito dentro il template questo codice:
    codice:
    <xsl:attribute name="href"><xsl:value-of select="inputDir"/></xsl:attribute>
    per vedere se riuscivo a specificare al codice che deve lavorare solo sul file di input... Non so se il metodo è giusto, anche se ci sono sicuramente altri errori nel codice in generale.

  5. #5
    <xsltherwise>
    </xsltherwise>

    questo non va bene in teoria ti da errore anche se non dovrebbe entrarci


    <xsl:apply-templates select="quello che voglio selezionare">

    questo va chiuso subito tanto è l'altro template che richiami col select che elabora ..


    http://www.w3schools.com/xsl/xsl_apply_templates.asp

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 © 2025 vBulletin Solutions, Inc. All rights reserved.