簡體   English   中英

xsl:param默認值未被覆蓋

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

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