簡體   English   中英

XSLT模板匹配和XPath

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM