如何复制元素内容而不仅仅是字符串
本文关键字:不仅仅是 字符串 元素 何复制 复制 | 更新日期: 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中的元素,可以使用
- 复制所选节点但不复制其属性或子节点的
<xs:copy>
- 复制整个选定XML片段的
<xs:copy-of>
(=也包括所有后代和属性) - 标识模板,即具有
<xs:copy>
的递归模板