XSLTのモード

XSLTのモード

[1] XSLT では、雛形規則実現値化に際してモード (mode) というものがあります。 これを使うと、原始木中の同じを複数回使って、 例えばあるときは見出しだけを出力して目次に、 あるときは全体を出力して本文に、 ということが出来ます。 http://www.w3.org/TR/xslt#modes

[2] XSLT 1.0 では、 xslt:template 要素型及び xslt:apply-templates 要素型に mode 属性があります。 この属性は QName を値に取るか、または属性の指定を省略します。

xslt:apply-templates の側でモードが指定されていると、 実現値化に使う雛形規則の選定の際に、同じ名前のモードの xslt:template のみを選定対象とします。属性なしは属性なしとのみ一致します。

[3] ですから、モードの継承のようなものはありません。モード M の雛形規則の中で単に <xslt:apply-templates/> としたのでは、名前なしの (既定の) モードを指定したことになります。

[4] xslt:template 要素に mode 属性を指定する場合は、 必ず match 属性が必要です。 つまり、モードは一致する節の実現値化に使われる雛形規則にのみ有効で、 名前 (name) により呼び出される雛形規則には適用されないのです。