私はほとんどXMLの初心者ですが、要素がないと要素を表示しないようにXSLTテンプレートを作成するには、特定のサブ要素が含まれていない場合に要素を削除するためのXSLTテンプレート
私はいくつかの例の入力と所望の出力と、私は下に何を意味するかを説明しようとします:
入力:
<shop>
<item>
<ID>12344</ID>
<CDKNAMEDK>Dansk CD NAVN</CDKNAMEDK>
<CDKNAMEDK>English CD name</CDKNAMEDK>
<info>
<Attributes>
<authcode>DS2978</authcode>
<PRICE>
<CURRENCY>DKK</CURRENCY>
<SALESPRICE>296</SALESPRICE>
</PRICE>
<Condition>used</Condition>
<garanty>Yes</garanty>
<garanty_length>2 months</garanty_length>
<Label_name>demo</Label_name>
</Attributes>
</info>
</item>
<item>
<ID>12345</ID>
<CDKNAMEDK>Dansk CD NAVN</CDKNAMEDK>
<CDKNAMEDK>English CD name</CDKNAMEDK>
</item>
</shop>
所望の出力:
<shop>
<item>
<ID>12344</ID>
<CDKNAMEDK>Dansk CD NAVN</CDKNAMEDK>
<CDKNAMEDK>English CD name</CDKNAMEDK>
<info>
<Attributes>
<authcode>DS29783</authcode>
<PRICE>
<CURRENCY>DKK</CURRENCY>
<SALESPRICE>296</SALESPRICE>
</PRICE>
<Condition>used</Condition>
<garanty>Yes</garanty>
<garanty_length>2 months</garanty_length>
<Label_name>demo</Label_name>
</Attributes>
</info>
</item>
</shop>
<info>
要素が取り込まれていないのであれば、基本的には、それは全体<item>
要素を非表示にします。
私はこれを達成する方法について、私たちにアドバイスを提供してくれることを願っています。おかげ
あなたの入力は整形式ではありませんXML:1つのルート要素がなく、 '- 'と '
'の間に不一致があります(XMLは大文字と小文字を区別します)。あなたの例の 'info'は*属性*ではなく、*要素*であることにも注意してください。 –
これを行う1つの方法は、* identity transform *テンプレートと、 'item [not(info)]'と一致する空のテンプレートを使うことです。 –
私の編集では、要素名の2つを変更しました。つまり、項目を項目に変更し、XMLを整形式にするためにauthcodeEからauthcodeEに変更しました。それを考えてください。 – zx485