如何保持标记的标签?(How do I preserve markup tags?)

2019-09-01 03:47发布

我有包含新闻报道的XML文档,以及新闻报道的主体元素包含p标签之间的纯文本。 当我使用XSL来检索体,如

<xsl:value-of select="body" />

在p标签似乎得到剥离出来。 我使用Visual Studio 2005中的实现XSL的。

没有人有任何想法如何避免这种情况? 谢谢。

Answer 1:

尝试使用

<xsl:copy-of select="body"/>

代替。 从w3School的上相同的文档 :

所述<xsl:copy-of>元素创建当前节点的副本。

注:命名空间节点,子节点和当前节点的属性被自动复制的!



Answer 2:

如果你没有在输入文档控制,复制的应工作:

从http://www.xml.com/pub/a/2000/06/07/transforming/index.html

“在xsl:复制的元件,在另一方面,可以复制,模板选择每个节点的整个子树包括属性,如果XSL的:复制的元件的选择属性具有适当的值在下面的例子。 ,模板副本标题元素节点及其所有子节点的 - 换句话说,完整的标题元素,包括他们的标签,子元素和属性:”

<xsl:template match="title">
  <xsl:copy-of select="*"/>
</xsl:template>


Answer 3:

如果你在输入文档控制, CDATA是正确的道路要走。



Answer 4:

XML元素的值 - 这不只是在XSLT但DOM实现真正的 - 是它的所有后代文本节点的连接。 在XSLT, value-of发射一个元素的值,而copy-of发射元件的一个副本。



Answer 5:

这是因为在发动机解释<p>标签(不包括它的输出)。 你需要指定你想要的内容“因为它是”使用“禁用输出转义= YES | NO”属性。

<xsl:value-of select="body" disable-output-escaping="yes"/>


文章来源: How do I preserve markup tags?
标签: xml xslt