0

我的 XML 中确实有一些样式。XslCompiledTransform 转换的输出结果是没有这些样式标记的 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 进行样式设置的原因是,块可能应用了多种样式,并与随机文本混合在一起。它在段落中设置某些单词的样式。

4

1 回答 1

1

您的 XSLT 代码

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

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

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

  1. <xs:copy>复制选定节点但不复制其属性或子节点
  2. <xs:copy-of>复制整个选定的 XML 片段(=所有后代和属性)
  3. 一个身份模板,即一个递归模板<xs:copy>
于 2011-05-04T10:26:59.300 回答