首页 文章

XSLT从XML输出html标记

提问于
浏览
6

我有一个类似于的XML文档:

<tag>
   <content>adsfasdf<b>asdf</b></content>
</tag>

我想让XSLT选择内容元素并显示所有内容:

<xsl:value-of select="/tag/content"/>

XSLT配置为呈现为HTML . 有没有办法让我可以获得值/副本来显示确切的内容而无需渲染它?

我正在寻找的是

asdfasdf<b>asdf</b>

并不是:

asdfasdf asdf

3 回答

  • 1

    您需要转义内容中的标记名称,我建议如下:

    <xsl:template match="content//*">
        <xsl:value-of select="concat('&lt;',name(),'&gt;')"/>
        <xsl:apply-templates/>
        <xsl:value-of select="concat('&lt;/',name(),'&gt;')"/>
    </xsl:template>
    

    然后你可以打电话给:

    <xsl:apply-templates select="/tag/content"/>
    
  • 10

    快速而肮脏的方式:

    <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>
    
  • 1

    我希望XSLT选择内容元素并显示所有内容:<xsl:value-of select =“/ tag / content”/>
    XSLT配置为呈现为HTML . 有没有办法让我可以获得值/副本来显示确切的内容而无需渲染它?我正在寻找的是asdfasdf <b> asdf </ b>
    而不是:asdfasdf asdf

    @ Nick-Jones的答案最接近你想要的 .

    请查看作为 XPath Visualizer 一部分的XSLT样式表,以获取如何生成任何XML文档的IE样式可折叠显示的广泛示例 .

相关问题