我有一个类似于:
的XML文档<tag>
<content>adsfasdf<b>asdf</b></content>
</tag>
我希望XSLT选择内容元素并显示所有内容:
<xsl:value-of select="/tag/content"/>
XSLT配置为呈现为HTML。有没有办法让我可以获得值/副本来显示确切的内容而无需渲染它?
我正在寻找的是
asdfasdf<b>asdf</b>
而不是:
asdfasdf asdf
答案 0 :(得分:10)
您需要在内容中转义标记名称,我建议使用以下内容:
<xsl:template match="content//*">
<xsl:value-of select="concat('<',name(),'>')"/>
<xsl:apply-templates/>
<xsl:value-of select="concat('</',name(),'>')"/>
</xsl:template>
然后你可以打电话:
<xsl:apply-templates select="/tag/content"/>
答案 1 :(得分:1)
快速而肮脏的方式:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="content">
<xsl:copy-of select="text() | *"/>
</xsl:template>
</xsl:stylesheet>
针对您的样本的结果将是:
adsfasdf<b>asdf</b>
另一种方法:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="b">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 2 :(得分:1)
我想让XSLT选择 内容元素并显示所有内容 内容:
<xsl:value-of select="/tag/content"/>
XSLT配置为呈现为 HTML。有没有办法让我得到 要显示的值/副本 确切的内容,而不必渲染 它?
我正在寻找的是
asdfasdf<b>asdf</b>
而不是:
asdfasdf asdf
@ Nick-Jones的回答最接近你想要的。
请查看属于 XPath Visualizer 的XSLT样式表,以获取如何生成任何XML文档的IE样式可折叠显示的广泛示例。