我有XML文件:
...
<Chart id="c01">
<expires>2012-07-19 12:20:00</expires>
<data><![CDATA[...]]></data>
</Chart>
...
其中CDATA是B64编码的PNG图像,并且希望将XML转换为HTML以查看图像。
为此,我设置XSL输出文本并转储CDATA:
<xsl:output method="text"/>
<xsl:template match="//data/text()">
<xsl:value-of select="."/>
</xsl:template>
在同一个模板中,我将基本的HTML结构包装起来,我将其排除在这里以供清除。
问题在于:如果我在XML文件//data/text()
上使用XPath,我只获得CDATA文本,但是在上面的XSL中我也得到了&#34; 2012-07-19 12:20:00&#34;来自<expires>
XML元素,在输出中。
我想这是我失踪的一些基本问题,但为什么日期也会被淘汰,我怎样才能在输出中避免它?
答案 0 :(得分:1)
实现这一目标的最短途径可能是:
<xsl:template match="*[not(self::data)]/text()"/>
完整转型:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="*[not(self::data)]/text()"/>
</xsl:stylesheet>
将此转换应用于XML文档:
<t>
<Chart id="c01">
<expires>2012-07-19 12:20:00</expires>
<data><![CDATA[ImageBlob]]></data>
</Chart>
</t>
产生了想要的正确结果:
ImageBlob