我有一个XML文档,我需要将其转换为HTML。 XML内容如下:
<root>
<enc>Sample Text : <d>Hello</d> <e>World</e></enc>
<dec>
Sample Text : <d>Hello</d> <e>World</e>
</dec>
</root>
我需要为“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的实际输出是:
示例文字:
<d>Hello</d> <e>World</e>
示例文字:您好 世界
所需的输出是:
示例文字:您好 世界
示例文字:您好 世界
请帮助我仅在XSLT的帮助下转换编码的xml值。
提前致谢。
答案 0 :(得分:2)
由于内部XML已被转义,因此它作为包含尖括号的单个文本节点存在,而不是作为节点树。在使用XSLT处理它之前,需要将其转换为节点树。将XML-as-angle-bracket转换为XML-as-a-tree的过程称为解析,因此您需要做的是通过XML解析器处理此内部XML。 XSLT中没有标准功能来执行此操作,但通常可以使用特定于处理器的扩展来完成:例如saxon:parse()
如果您在Saxon中。