Help:テンプレート展開
注意: このページを編集すると、編集内容が CC0 のもとで公開されることに同意したと見なされます。詳細はパブリック・ドメインのヘルプ ページを参照してください。 このページの古い版の一部は、CC BY-SA ライセンスのもとで取り込まれました。 新しい編集のみがパブリックドメインと見なされます。 |
ExpandTemplates は、テンプレート、パーサー関数、変数を再帰的に展開できるようにします。
Special:ExpandTemplates には入力欄が 2 つあり、一方はウィキテキストを、他方はページ名 pagename を記入します。
「結果」欄に展開したウィキテキスト、すなわちテンプレート、パーサ関数、変数は再帰的に展開されます。ページ名に依存する変数は、提示されたページ名に基づいて展開します。
この過程は、ページ保存または「プレビュー」を済ませた後でページのレンダリングを実施する (または生成されたウィキテキストを他の処理へ送る直前の) 中間の結果であり、ウィキテキストの展開を理解しでバグするために役立ちます。
subst展開は対応しません (ここで扱う展開とは別に、編集窓にウィキテキストを入力、[pre-save transformation] と記入、「プレビューを見る」または「保存」ボタンを押すと、通常のパーサ処理の前に実行される展開のこと。生成されたウィキテキストが正しいか「変更点を表示」ボタンを押して任意の編集窓で調べるか、テストページを保存後に編集窓を再度開くと検証できます。)
Subst展開を使いたい場合は、ExpandTemplates API ではなく API を使い、[そのために pst
を true
に設定]、保存しておいた変換を有効にします。
これらに加えてプレビューの領域があります。 しかしながら、ここには展開済みのウィキテキストをレンダリングした結果を再度、表示します (タスク T30616。) 表示結果は通常、1回だけ展開した時と同じですが、初回の展開でカッコが生成されると、見た目が変わります。
マジックワードの '!' は半角縦棒 "|" をテンプレートまたはパーサー関数のパラメーター値に置き換えることができ、特に表の構文に使った場合が当てはまります。 このテンプレートを ExpandTemplates に使用すると、部分的な展開または subst 展開が実行できます。
表では、Template:2x を使用して、{{!}} という形式でパラメーター区切り "|" を指定した呼び出しが通常の展開を妨げることを示しています。最後の列ではプレビュー領域 (内容は二重の展開の結果) を示しています。
使用法
元のウィキテキスト | 展開されたウィキテキスト | レンダリング | ExpandTemplates の出力のプレビュー |
---|---|---|---|
{{2x|[[MediaWiki]] }}
|
[[MediaWiki]] [[MediaWiki]]
|
MediaWiki MediaWiki | MediaWiki MediaWiki |
{{2x{{!}}[[MediaWiki]] }}
|
{{2x|[[MediaWiki]] }}
| {{2x|MediaWiki }} | MediaWiki MediaWiki |
{{2x{{!{{!}}}}[[MediaWiki]] }}
|
{{2x{{!|}}[[MediaWiki]] }}
| {{2x{{!|}}MediaWiki }} | {{2x|MediaWiki }} |
コメントの除去
「コメントの除去」オプションでは、コメントを除去するか選択でき、最終の結果だけでなく展開プロセス全体で実施されます。 するとパーサー関数の出力にも影響します。コメントが #expr または #ifexpr の表現形式の場合、「コメントを除去」が有効でない場合にはエラーメッセージを表示し、またコメントは #if および ifeq にも影響します。
例:
{{#expr:<!--p-->3}} {{#ifeq:<!--p-->3|3|1|0}} {{#if:<!--p-->|1|0}}
通常の展開、ExpandTemplates を使い「コメントを除去」が有効の場合:
3
1
0
完全に subst 展開した例で、ExpandTemplates を使い「コメントを除去」が無効の場合:
Expression error: Unexpected < operator
0
1
XML パースの樹形図
オプションとして XML 構文解析ツリー (ウィキテキストを XML DOM 表記したもので、別称ドキュメント ツリーまたは DOM ツリーとも呼ぶ) を表示 (Manual:Preprocessor_DOM.php も参照)。 例えば:
a [[b|c]] {{CURRENTYEAR}} {{{{{a}}}}} {{#ifeq:2|3|a|b}} {{#switch:a|a=3|b=4|a=5}} {{a|b|c=d[[e|f]]g|h}} {{{a|b}}} {{#tag:nowiki|a=b}} {{#tag:nowiki|aeb}}
出力結果は以下のようになります。
<root>a [[b|c]]
<template lineStart="1"><title>CURRENTYEAR</title></template>
<template lineStart="1"><title><tplarg><title>a</title></tplarg></title></template>
<template lineStart="1"><title>#ifeq:2</title><part><name index="1"/><value>3</value></part><part><name index="2"/><value>a</value></part><part><name index="3"/><value>b</value></part></template>
<template lineStart="1"><title>#switch:a</title><part><name>a</name>=<value>3</value></part><part><name>b</name>=<value>4</value></part><part><name>a</name>=<value>5</value></part></template>
<template lineStart="1"><title>a</title><part><name index="1"/><value>b</value></part><part><name>c</name>=<value>d[[e|f]]g</value></part><part><name index="2"/><value>h</value></part></template>
<tplarg lineStart="1"><title>a</title><part><name index="1"/><value>b</value></part></tplarg></root>
<template lineStart="1"><title>#tag:nowiki</title><part><name>a</name>=<value>b</value></part></template>
<template lineStart="1"><title>#tag:nowiki</title><part><name index="1"/><value>aeb</value></part></template>
その結果:
- 結果には評価に移る前の処理中の状態が表示されます。 その結果、変数名やパーサー関数の名前、テンプレート類でさえ、検討されていません。 また、半角コロン記号や半角シャープ "#" はまだ未検出のため、変数とパーサー関数とテンプレートの分別ができず、変数やパーサー関数やテンプレートがあるかないかすら検出できません。 そのため、次のようになります。
- パラメーター項目同士の見分けは半角等号 "=" の有無で判断しますが、パーサー関数の特定の項目の場合、結局のところ、パーサー項目はただの平文として扱うこともあります。
- 「|a=b|a=c」はまだ「|a=c」に簡約されていません。左辺が等しいことがわかるのは、その評価後であり、また、この簡約はタイトルの評価に依存するためです。 一例として、
#switch:
.. の書式のタイトルでは、「|a=b|a=c」は結局は「|a=b」と等しくなります。
- 半角角カッコ 2 個の対は「|」がパラメーターの区切り子として解釈されるのを予防し、それでもリンクはツリー内で分離して表示されません。
URL欄に文字を入力
入力するウィキテキストは URL 欄に記入してもよく、例えばurlエンコードだと {{fullurl:special:ExpandTemplates|wpInput={{urlencode:{{texpr{{!}}abc}}}}}}
と記入すると出力は //www.mediawiki.org/w/index.php?title=Special:ExpandTemplates&wpInput=%7B%7Btexpr%7Cabc%7D%7D です。
{{!}}
は{{!}}を適用するとテンプレートのtexprがURLで展開しないように制限し、さらに半角の縦棒記号 "|" をurlエンコード内の2番目のダミーのパラメーターとの区切り記号と解釈させない働きをします。
またパラメーターを介さずにテンプレート呼び出しを実現し、ExpandTemplatesの入力ボックス内では、無名のパラメーター{{{1}}}を無定義ではなく空の文字列として扱います:例えば{{fullurl:special:ExpandTemplates|wpInput={{tc{{!}}}}}}
として。
これは変数やパーサー関数には無効で、カッコ1組に半角パーセント記号を使って対応します (ウィキテキストを参照)。ParserFunctions の接頭辞 "#" には %23 を代入。
https://www.mediawiki.org/w/index.php?title=Special:ExpandTemplates&wpInput={{CURRENTTIME}}.
https://www.mediawiki.org/w/index.php?title=Special:ExpandTemplates&wpInput={{%23expr:2*3}}.
例
クエリのパラメーター
- wpContextTitle=pagetitle
- wpGenerateRawHtml=true
- wpGenerateXml=true
- wpInput=
- wpRemoveComments=true
- wpRemoveNowiki=true
URL:
カスタマイズ
- ボックスの幅を調節
入力と結果の表示窓の幅は、既定で 11 文字に制限されています。 最大幅に広げるには、ご利用の CSS に下記のような記述を追加します。
textarea {
border: 1px solid #2f6fab;
color: Black;
background-color: white;
width: 100%;
padding: 0.1em;
overflow: auto;
}