Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为编码的XML值应用XSLT模板_Xml_Xslt - Fatal编程技术网

为编码的XML值应用XSLT模板

为编码的XML值应用XSLT模板,xml,xslt,Xml,Xslt,我有一个需要转换为HTML的XML文档。XML内容如下: <root> <enc>Sample Text : &lt;d&gt;Hello&lt;/d&gt; &lt;e&gt;World&lt;/e&gt;</enc> <dec> Sample Text : <d>Hello</d> <e>World</e&g

我有一个需要转换为HTML的XML文档。XML内容如下:

<root>
    <enc>Sample Text : &lt;d&gt;Hello&lt;/d&gt; &lt;e&gt;World&lt;/e&gt;</enc>
    <dec>
        Sample Text : <d>Hello</d> <e>World</e>
    </dec>
</root>

示例文本:dHello/d eWorld/e
示例文本:Hello World
我需要为“enc”元素中的值应用一个模板,就像我在下面的xslt中为“dec”元素所做的那样

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:template match="root">
        <html>
            <body>      
                <xsl:apply-templates/>      
            </body>
        </html>
    </xsl:template>
    <xsl:template match="dec">
        <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="enc">  
        <xsl:value-of select="." disable-output-escaping="no" />    
        <br/>
    </xsl:template>
    <xsl:template match="d">
        <b>
            <xsl:value-of select="."/>
        </b>
    </xsl:template>
    <xsl:template match="e">
        <i>
            <xsl:value-of select="."/>
        </i>
    </xsl:template>
</xsl:stylesheet>


上述XSLT的实际输出为:

示例文本:
Hello World

示例文本:你好世界

所需输出为:

示例文本:你好世界
示例文本:你好世界

请帮助我仅在XSLT的帮助下转换编码的xml值


提前感谢。

因为内部XML已经转义,所以它以包含尖括号的单个文本节点的形式出现,而不是以节点树的形式出现。在使用XSLT处理它之前,需要将其转换为节点树。将XML作为尖括号转换为XML-as-a-tree的过程称为解析,因此您需要做的是通过XML解析器处理这个内部XML。XSLT中没有标准函数来实现这一点,但通常可以使用特定于处理器的扩展来实现:例如,如果您在Saxon。

查看这篇旧文章:@Paul:+1。上面有一个指向简单XML解析器的链接。只缺少对XPath 3.0的引用