我有包含“^^”的示例 XML 檔案,我需要從各處洗掉它。
在 XML 中找到“^^”的可能性有“n”個,所以我無法根據 XPATH 進行選擇。
提前致謝。
Input
<CATALOG>
<CD>
<TITLE>^^Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia^^</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>^^Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>^^CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
</CATALOG>
Desire Output
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
</CATALOG>
我嘗試過這樣的事情。
<xsl:template match="@*|*|processing-instruction()">
<xsl:copy>
<xsl:apply-templates select="*|@*|translate(text(),'^^',' ')|processing-instruction()"/>
</xsl:copy>
</xsl:template>
但它不作業
uj5u.com熱心網友回復:
使用該函式從所有文本節點translate()中洗掉所有出現的字符。^
添加:
正如評論中所解釋的,您應該將身份轉換模板與匹配任何文本節點的覆寫模板一起使用:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()" priority="0">
<xsl:value-of select="translate(., '^', '')"/>
</xsl:template>
</xsl:stylesheet>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/454735.html
上一篇:迭代具有相同值的子節點-XSLT
