如何复制元素内容而不仅仅是字符串

本文关键字:不仅仅是 字符串 元素 何复制 复制 | 更新日期: 2023-09-27 17:54:30

我的XML确实有一些样式。XslCompiledTransform Transform的输出结果是没有这些样式标签的HTML。有没有办法告诉XslCompiledTransform保持它们?或者XslCompiledTransform应该默认保留它们?

这是我的xml

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

我的XSLT只是取出整个元素

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

这是我的c#,我只应用了默认值:

 // Load the style sheet. 
 XslCompiledTransform xslt = new XslCompiledTransform();
 xslt.Load(args[0]);
......
         xslt.Transform(xmlFileName, Path.Combine(htmlOutputPath, Path.GetFileNameWithoutExtension(xmlFileName) + ".html"));

我没有从xslt做样式的原因是因为块可以有和应用的样式的数量,混合在随机文本。

如何复制元素内容而不仅仅是字符串

您的XSLT代码

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

实际上并不复制<codeSnippetFull>元素的(标记)内容。<xsl:value-of>用于创建文本节点。Value-of将选定节点转换为字符串。元素的字符串值是作为所选元素的后代的文本节点的连接。节点集的字符串值(例如:选择了多个元素)是节点集中第一个节点的字符串值。

要复制XSLT中的元素,可以使用

  1. 复制所选节点但不复制其属性或子节点的<xs:copy>
  2. 复制整个选定XML片段的<xs:copy-of>(=也包括所有后代和属性)
  3. 标识模板,即具有<xs:copy>
  4. 的递归模板
相关文章: