共用方式為


<xsl:param> 元素

宣告要在 <xsl:stylesheet> 項目或 <xsl:template> 項目中使用的具名參數。 允許預設值規格。

<xsl:param
  name = QName
  select = Expression
</xsl:param>

屬性

  • name
    必要項。 指定參數的 限定名稱 (XSLT)

  • select
    屬性的值為 Expressions (XSLT),而變數的值為評估運算式後所產生的物件。 指定這個屬性時,<xsl:param> 項目必須是空的。

項目資訊

發生次數

無限制

父項目

xsl:stylesheetxsl:templatexsl:transform

項目子系

xsl:apply-templatesxsl:attributexsl:call-templatexsl:choosexsl:commentxsl:copyxsl:copy-ofxsl:elementxsl:for-eachxsl:ifxsl:processing-instructionxsl:textxsl:value-ofxsl:variable、輸出項目

備註

<xsl:param> 項目上的指定值是繫結的預設值。 叫用包含 <xsl:param> 的範本或樣式表時,會使用傳遞的參數以取代預設值。

必須將 <xsl:param> 項目宣告成 <xsl:template> 項目的直接子系。 若未宣告為直接子系,則不能存取 <xsl:param> 項目值,並且將發生錯誤。 例如:

<xsl:template name="getcount">
   <xsl:element name="strong">
      <xsl:param name="counted">
         <xsl:value-of select="count(//book)"/>
      </xsl:param>
      Total Book Count: <xsl:value-of select="$counted"/>
   </xsl:element>
</xsl:template>

在前一個範例中,<xsl:template> 項目是 <strong> 項目唯一的直接子系。 因此,剖析器無法正確評估 <xsl:param> 項目值,因而發生下列的錯誤:

注意事項注意事項

不能在這裡使用關鍵字 xsl:param。

請正確放置這個項目,以便在 <xsl:template> 項目內容中評估該項目,並得到下列結果:

<xsl:template name="getcount">
   <xsl:param name="counted">
      <xsl:value-of select="count(//book)"/>
   </xsl:param>
   <xsl:element name="strong">
      Total Book Count: <xsl:value-of select="$counted"/>
   </xsl:element>

參數值可以是運算式能傳回的任何型別物件。 <xsl:param> 項目能以其他三種方式指定變數的值:

  • 如果項目具有 select 屬性,則屬性的值必須是運算式,且參數值必須是評估運算式所得到的物件。 在此情況下,項目的內容必須是空白的。

  • 若項目沒有 select 屬性,且具有非空白的內容 (例如一或多個子節點),則內容會指定一個值。 內容是具現化的範本,可提供參數值。 此值為結果樹狀結構片段,等同於一個節點集,而其中唯一所含的單一根節點,將範本具現化後所產生的節點序列當作子系。 結果樹狀結構片段中的節點之基本 URI 是項目的基本 URI。

    若因範本具現化而建立的節點序列成員是屬性節點或命名空間節點,則會發生錯誤,因為根節點無法將屬性節點或命名空間節點當作子系。

  • 如果內容是空的,並且沒有 select 屬性,參數值將是空字串。 因此

    <xsl:param name="x"/>
    

    相當於

    <xsl:param name="x" select="''"/>
    

    當您用參數來按照位置選取節點時,請務必不要執行下列動作:

    <xsl:param name="n">2</xsl:param>
    ...
    <xsl:value-of select="item[$n]"/>
    

    這會輸出第一個項目的值,因為變數 "n" 將繫結到結果樹狀結構片段,而非數字。 相反地,請執行

    <xsl:param name="n" select="2"/>
    ...
    <xsl:value-of select="item[$n]"/>
    

    <xsl:param name="n">2</xsl:param>
    ...
    <xsl:value-of select="item[number($n)]"/>
    

    下列指令可將空節點集輕鬆指定為參數的預設值。 <xsl:param name="x" select="/.."/>

範例

這個範例可定義「編號區塊」的具名範本,並使其擁有能控制數字格式的引數。

XML 檔 (catmat.xml)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="paramelem.xsl"?>
<lists>
   <ol>
      <li>the</li>
      <li>cat</li>
      <ol>
         <li>sat</li>
         <li>on</li>
         <li>the</li>
      </ol>
      <li>mat</li>
   </ol>
</lists>

XSLT 檔 (paramelem.xsl)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="paramelem.xsl"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:template match="ol/li">
   <br/>
   <xsl:call-template name="numbered-block"/>
</xsl:template>

<xsl:template match="ol//ol/li">
   <br/>&#xA0;&#xA0;&#xA0;
   <xsl:call-template name="numbered-block">
      <xsl:with-param name="format">a. </xsl:with-param>
   </xsl:call-template>
</xsl:template>

<xsl:template name="numbered-block">
   <xsl:param name="format">1. </xsl:param>
   <fo:block>
      <xsl:number format="{$format}"/>
      <xsl:apply-templates/>
   </fo:block>
</xsl:template>

</xsl:stylesheet>

輸出

此為格式化輸出:

1. the 2. cat     a. sat     b. on     c. the 3. mat

以下是處理器輸出,為了清楚的目的,已加入泛空白字元。

<?xml version="1.0" encoding="UTF-16"?>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">1. the</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">2. cat</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />   

<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">a. sat</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />   

<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">b. on</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />   

<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">c. the</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">3. mat</fo:block>

請參閱

參考

<xsl:with-param> 元素

<xsl:variable> 元素

<xsl:call-template> 元素