試圖瞭解next-match
我在xmlplease.com找到了一個例子,但是當我自己嘗試時,我得到一個Ambiguous rule match for ...
,我真的不知道是不是通過這個例子得到的。第三個模板在另外兩個之前應該如何優先?這種模糊的規則匹配不應該發生嗎?
這個例子簡直是錯的,還是我在這裏錯過了一些東西?
XSLT
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes" />
<xsl:template match="/">
<PRODUCTS>
<xsl:apply-templates />
</PRODUCTS>
</xsl:template>
<xsl:template match="product">
<PRODUCT id="{@id}" price="{@price}" stock="{@stock}" />
</xsl:template>
<xsl:template match="product[@id = 'p2']">
<PRODUCT id="{@id}" price="{@price * 1.25}" stock="{@stock}" />
</xsl:template>
<xsl:template match="product|product[@id = 'p2']">
<xsl:comment>
<xsl:value-of select="concat(' ', @name, ' ')" />
</xsl:comment>
<xsl:text>
</xsl:text>
<xsl:next-match />
</xsl:template>
</xsl:stylesheet>
樣品輸入
<?xml version="1.0"?>
<products>
<product id="p1" name="Delta" price="3250" stock="4" />
<product id="p2" name="Golf" price="1000" stock="5" />
<product id="p3" name="Alpha" price="1200" stock="19" />
</products>
啊,這是有道理的。所以作者使用的轉換引擎可能會這樣配置。不知道這甚至是一個選擇,嘿嘿。 – Svish