Domanda

Il mio problema è che il mio documento XML contiene frammenti di XHTML al suo interno e mentre lo passa attraverso un XSLT vorrei che eseguisse il rendering di tali frammenti senza alterarli.

Ho provato a racchiudere lo snippet in un CDATA ma non funziona poiché minore di e maggiore di vengono tradotti in < e > anziché essere ripetuti direttamente.

Qual è l'XSL richiesto per fare ciò?

È stato utile?

Soluzione

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

Questa viene definita "trasformazione dell'identità" nel Specifica XSLT.

Altri suggerimenti

Ho riscontrato questo problema e la copia è sicuramente la più semplice da usare.L'identità funziona, ma sono 5 righe di codice e dovresti chiamare un modello di questo tipo, non solo definirlo così com'è nel tuo documento XSLT (altrimenti probabilmente non otterrai ciò che ti aspettavi nel tuo output).

Il mio problema principale in realtà era copiare il contenuto di un tag e non il tag stesso.In realtà è molto semplice da risolvere, ma mi ci è voluto un po' di tempo per capirlo (forse perché QtXmlPatterns si blocca parecchio!)

Quindi, quanto segue copia il tag qui nominato e tutti i suoi figli:

<xsl:copy-of select="this/tag/here"/>

Ma molto spesso non vuoi farlo perché <here> è in realtà il contenitore, in altre parole, non dovrebbe apparire nell'output.In tal caso puoi semplicemente fare questo:

<xsl:copy-of select="this/tag/here/*"/>

Questo copia tutti i figli trovati nel tag denominato <here>.

Supponendo che il tuo xhtml sia in un elemento YYY

http://www.dpawson.co.uk/xsl/sect2/N1930.html spiega le opzioni

xsl:copia di

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top