[英]XSLT template match and XPath
我有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之上,我也會從<expires>
XML元素中得到“ 2012-07-19 12:20:00” ,在輸出中。
我想這是我缺少的一些基本內容,但是為什么還輸出日期,如何在輸出中避免呢?
可能最簡單的方法是 :
<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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.