當運行下面的輸入XMLXSLT模板模棱兩可的澄清
<root>
<value>false</value>
<value>true</value>
</root>
針對以下XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="value">
<true_value/>
</xsl:template>
<xsl:template match="value[. = 'false']">
<false_value/>
</xsl:template>
</xsl:stylesheet>
我得到value
元素與 '假' 作爲其內容改爲false_value
..和所有其他value
元素都變成了true_value
。 輸出:
<?xml version="1.0" encoding="utf-8"?>
<root>
<false_value/>
<true_value/>
</root>
但只有當我更改模板匹配root/value
做我得到模棱兩可的模板警告。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="root/value">
<true_value/>
</xsl:template>
<xsl:template match="root/value[. = 'false']">
<false_value/>
</xsl:template>
</xsl:stylesheet>
請通過解釋幫我什麼區別添加root
在xsl:template
的@match
,使我得到這樣的警告中的XPath。(Ambiguous rule match for /root[1]/value[1]
)
@MartinHonnen感謝馬丁,我也試圖解決這個問題 - 讓我知道你是否有其他建議。 – 2014-11-22 16:28:04
總是很高興收到你的來信。感謝這樣的詳細解釋。 – 2014-11-22 16:51:41