Pregunta

Mi XML tiene algo de estilo dentro de él. La salida de la transformación XSLCompiledTransform da como resultado HTML que no tiene estas etiquetas de estilo. ¿Hay alguna forma de decirle al XSLCompiledTransform que los mantenga? ¿O debería el XSLCompiledTransform mantenerlos por defecto?

Aquí está mi XML

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

Mi XSLT simplemente saca todo el elemento

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

Aquí está mi C#, no tengo nada más que los valores predeterminados aplicados:

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

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

La razón por la que no estoy haciendo el estilo del XSLT es porque el bloque podría tener y la cantidad de estilos aplicados, mezclados con texto aleatorio. Está diseñando ciertas palabras en los párrafos.

¿Fue útil?

Solución

Tu código XSLT

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

en realidad no copia el contenido (marcado) del <codeSnippetFull> elemento. <xsl:value-of> se usa para crear nodos de texto. Value-of Convertir el nodo seleccionado en una cadena. El valor de la cadena de un elemento es la concatenación de los nodos de texto que son descendientes del elemento seleccionado. Valor de cadena de un conjunto de nodo (por ejemplo: múltiples elementos seleccionados) es el valor de cadena del primer nodo en el conjunto.

Para copiar elementos en XSLT que puede usar

  1. <xs:copy> que copia el nodo seleccionado pero no sus atributos o hijos
  2. <xs:copy-of> que copia todo el fragmento XML seleccionado (= también todos los descendientes y atributos)
  3. una plantilla de identidad, es decir, una plantilla recursiva con <xs:copy>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top