[英]xsl:param default value is not being overridden
我嘗試將問題減少到盡可能小的測試用例。
我目前有以下樣式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template name="set-attrib">
<xsl:param name="val" select="3"/>
<xsl:attribute name="value">
<xsl:value-of select="$val" />
</xsl:attribute>
</xsl:template>
<xsl:template match='@value[parent::element]'>
<xsl:call-template name="set-attrib">
<with-param name="val">2</with-param>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
並將其應用於以下XML:
<?xml version="1.0"?>
<element value="0"/>
我得到的輸出:
<?xml version="1.0"?>
<element value="3"/>
而不是我所期望的:
<?xml version="1.0"?>
<element value="2"/>
似乎模板set-attrib
忽略了在call-template
設置的參數val
。
我在網上挖了一些想法,並嘗試了各種排列方式(例如,在with-param
使用select="2"
,或者將xsl:param
的默認值移到<!-- Content: template -->
,而不是而不是select
屬性)。
我似乎能夠使其正常工作的唯一方法是在set-attrib
模板中對參數進行硬編碼或完全內聯call-template
。
我看不到這與其他示例代碼有何不同; 我是否缺少明顯的東西?
<with-param name="val">2</with-param>
必須為<xsl:with-param name="val">2</with-param>
。 進行此更改后, http://xsltransform.net/bFDb2BS可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.