1

私はXMLファイルを持っています:

...
    <Chart id="c01">
      <expires>2012-07-19 12:20:00</expires>
      <data><![CDATA[...]]></data>
    </Chart>
...

ここで、CDATAはB64でエンコードされたPNG画像であり、画像を表示するためにXMLをHTMLに変換したいと考えています。

そのために、テキストを出力してCDATAをダンプするようにXSLを設定しました。

<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-1912: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 に答える