1

我有 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 文件上使用 XPath,我只会得到 CDATA 文本,但使用上面的 XSL,我还会在输出中从 XML 元素中//data/text()得到“2012-07-19 12:20:00” 。<expires>

我想这是我缺少的一些基本内容,但是为什么还要输出日期以及如何在输出中避免它?

4

1 回答 1

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
于 2012-07-19T12:00:33.033 回答