Domanda

Il mio XML ha un po 'di stile al suo interno. L'output della trasformata XSLCompileDTransform risulta in HTML che non ha questi tag di stile. C'è un modo per dire a XSLCUCPILEDTRANSFORM per mantenerli? O dovrebbe tenerli per impostazione predefinita XSLCompleDTransform per impostazione predefinita?

Ecco il mio XML

> <codeSnippetFull>
>         <span class="kwrd">event</span> 
>         OnCreate {
>         <span class="kwrd">if</span>
>              (Count == 0)
>                   AddE(D); <span class="rem">//  comment </span>
>         }
>        </codeSnippetFull>

La mia XSLT tira fuori l'intero elemento

         <xsl:value-of select="THelpDocument/HelpBody/example/codeSnippetFull"/>

Ecco il mio C#, non ho nient'altro che le impostazioni predefinite applicate:

 // Load the style sheet. 
 XslCompiledTransform xslt = new XslCompiledTransform();
 xslt.Load(args[0]);

......
         xslt.Transform(xmlFileName, Path.Combine(htmlOutputPath, Path.GetFileNameWithoutExtension(xmlFileName) + ".html"));

Il motivo per cui non sto facendo lo stile dalla XSLT è perché il blocco potrebbe avere e la quantità di stili applicati, mescolati con testo casuale. Sta acconciando alcune parole nei paragrafi.

È stato utile?

Soluzione

Il tuo codice XSLT

<xsl:value-of select="THelpDocument/HelpBody/example/codeSnippetFull"/>

in realtà non copia il contenuto (markup) del <codeSnippetFull> elemento. <xsl:value-of> viene utilizzato per creare nodi di testo. Valore di converte il nodo selezionato in una stringa. Il valore della stringa di un elemento è la concatenazione dei nodi di testo che sono discendenti dell'elemento selezionato. Valore stringa di un set di nodi (ad esempio: più elementi selezionati) è il valore di stringa del primo nodo nel set.

Per copiare elementi in XSLT è possibile utilizzare

  1. <xs:copy> che copia il nodo selezionato ma non i suoi attributi o bambini
  2. <xs:copy-of> che copia l'intero frammento XML selezionato (= anche tutti i discendenti e gli attributi)
  3. un modello di identità, cioè un modello ricorsivo con <xs:copy>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top