Wikipedia:井戸端/subj/<ref>タグをつけると動かなくなるtemplate

<ref>タグをつけると動かなくなるtemplate[編集]

ドイツの自治体コードから人口を自動的に算出するテンプレートを作ろうとTemplate:テストでテストしているのですが上手く動きません。たとえばフランクフルト・アム・マインの自治体コードを使って、{{テスト|自治体コード=06412000}}とした場合、<ref>, </ref> がないときちんと動作するのですが、これをつけたとたんエラーになります。どうしたら、<ref>を実現できるようになるのでしょうか?ぜひご教示ください。--汲平会話2020年3月27日 (金) 14:12 (UTC)[返信]

コメント <ref> - </ref> タグは入れ子にできません。テンプレートの<ref> - </ref>内の展開がされず、字句そのまま表記が残ります。{{Refnest}}のソースや{{自治体人口}}、{{自治体人口/北海道}}のような実装が参考になると思います。--Licsak会話2020年3月27日 (金) 17:16 (UTC)[返信]
Licsakさん、ありがとうございます。<ref>-</ref> は入れ子になっていません。出典へのリンクが {{Population GER-xx|自治体リンク|SOURCE}} にあるので、州ごとに異なる xx の部分を自治体コードに基づいて #switch で入れ替えようとしています。前後に <ref>-</ref> がない場合にはきちんとリンクができるのですが、<ref>-</ref> があるとこの選択ができず、{{Population GER}} と認識しているようなのです。--汲平会話2020年3月28日 (土) 01:28 (UTC)[返信]
コメント <ref>[(出典など)]</ref> の表記ではだめなのでしょうか?この手のテンプレートの使用にこだわる人が多い気がしますので。 -160.86.235.213 2020年3月28日 (土) 02:18 (UTC)[返信]
コメント テンプレート展開の結果、<ref> - </ref> タグが入れ子になるケースではエラーになります(H:REFNEST)。--Licsak会話2020年3月28日 (土) 05:54 (UTC)[返信]

あんまりスマートじゃないのですが、<ref> </ref> の中に分岐を入れて{{Population GER-xx|自治体リンク|SOURCE}}を一つ一つ書くことにしました。ご回答ありがとうございました。--汲平会話2020年3月28日 (土) 12:36 (UTC)[返信]

この件について、検証したところ、<ref></ref>内ではテンプレートのパラメタが展開されないことがわかりました。したがって、以下の「{{{自治体コード}}}」は、文字列「{{{自治体コード}}}」として処理されていることになります。試しに、「|#default = 000」を追加したところ、出力結果は「Template:Population GER000」となりました。これは、「{{{自治体コード}}}」を文字列と解釈したときに、以下の条件01〜16のいずれにも該当しなかったことを示すものです。

<ref>
{{Population GER{{#switch:{{str left|{{Gemeindeschlüssel|{{{自治体コード}}}}}|2}}
	|01 = -SH
	|02 = -HH
	|03 = -NI
	|04 = -HB
	|05 = -NW
	|06 = -HE
	|07 = -RP
	|08 = -BW
	|09 = -BY
	|10 = -SL
	|11 = -BE
	|12 = -BB
	|13 = -MV
	|14 = -SN
	|15 = -ST
	|16 = -TH
}}|{{{自治体コード}}}|SOURCE}}
</ref>

私は解決策を見つけました。Help:マジックワード#その他の用法{{#tag:タグ名|タグで囲む文字列|attr=val|attr2=val2}}を使うのです。つまり、以下のようにします。これであれば、「{{{自治体コード}}}」はパラメタとして解釈され、例えば{{テスト|自治体コード=06412000}}と入力したときに、{{str left|{{Gemeindeschlüssel|{{{自治体コード}}}}}|2}}が「06」と解釈され、適切なテンプレートを返してくれるようになります。

{{#tag:ref|
{{Population GER{{#switch:{{str left|{{Gemeindeschlüssel|{{{自治体コード}}}}}|2}}
	|01 = -SH
	|02 = -HH
	|03 = -NI
	|04 = -HB
	|05 = -NW
	|06 = -HE
	|07 = -RP
	|08 = -BW
	|09 = -BY
	|10 = -SL
	|11 = -BE
	|12 = -BB
	|13 = -MV
	|14 = -SN
	|15 = -ST
	|16 = -TH
}}|{{{自治体コード}}}|SOURCE}}
}}

以上、汲平さんは妥協案をお見つけになったようですが、後学のために残しておきます。 片割れ靴下会話2020年3月29日 (日) 13:38 (UTC)[返信]

片割れ靴下さん、ありがとうございました。Help:マジックワードのページも読んだのですが、説明を読んでもさっぱり意味が分からなかったので諦めていました。こうやって使うのですね。とても勉強になりました。今後の参考にさせていただきます。--汲平会話2020年3月29日 (日) 13:57 (UTC)[返信]