<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSLT</anchor> では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">雛形規則</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実現値化</anchor>に際して<dfn>モード</dfn>
(mode) というものがあります。
これを使うと、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">原始木</anchor>中の同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">節</anchor>を複数回使って、
例えばあるときは見出しだけを出力して目次に、
あるときは全体を出力して本文に、
ということが出来ます。
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/xslt#modes">http://www.w3.org/TR/xslt#modes</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> XSLT 1.0 では、 <code class="XSLTe"><var>xslt:</var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">template</anchor></code>
要素型及び <code class="XSLTe"><var>xslt:</var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">apply-templates</anchor></code>
要素型に <code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mode</anchor></code> 属性があります。
この属性は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QName</anchor> を値に取るか、または属性の指定を省略します。</p><p><code class="XSLTe"><var>xslt:</var>apply-templates</code>
の側でモードが指定されていると、
実現値化に使う雛形規則の選定の際に、同じ名前のモードの
<code class="XSLTe"><var>xslt:</var>template</code>
のみを選定対象とします。属性なしは属性なしとのみ一致します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ですから、モードの継承のようなものはありません。モード <var xmlns="http://www.w3.org/1999/xhtml">M</var> の雛形規則の中で単に <code xmlns="http://www.w3.org/1999/xhtml" class="XSLT">&lt;<var>xslt:</var>apply-templates/&gt;</code> としたのでは、名前なしの (既定の) モードを指定したことになります。</weak></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <code class="XSLTe"><var>xslt:</var>template</code> 要素に
<code class="XSLTa">mode</code> 属性を指定する場合は、
必ず <code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">match</anchor></code> 属性が必要です。
つまり、モードは一致する節の実現値化に使われる雛形規則にのみ有効で、
名前 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<code xmlns="http://www.w3.org/1999/xhtml" class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">name</anchor></code>)</weak> により呼び出される雛形規則には適用されないのです。</p></body></html>