我的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做样式的原因是因为块可能有应用的样式,并且随机文本混合使用。它在段落中描述了某些单词。
答案 0 :(得分:1)
您的XSLT代码
<xsl:value-of select="THelpDocument/HelpBody/example/codeSnippetFull"/>
实际上并不复制<codeSnippetFull>
元素的(标记)内容。 <xsl:value-of>
用于创建文本节点。 Value-将所选节点转换为字符串。元素的字符串值是作为所选元素的后代的文本节点的串联。节点集的字符串值(例如:选择了多个元素)是集合中第一个节点的字符串值。
要在XSLT中复制元素,可以使用
<xs:copy>
复制所选节点但不复制其属性或子项<xs:copy-of>
复制整个选定的XML片段(=所有后代和属性)<xs:copy>