我幾乎是一個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:它缺少一個根元素,並且「- 」和「
」(XML區分大小寫)之間不匹配。還要注意,在你的例子中'info'是*元素*,而不是*屬性*。 –
執行此操作的一種方法是使用* identity transform *模板,以及匹配'item [not(info)]'的空模板。 –
隨着我的編輯,我更改了兩個元素名稱:'Item'到'item'和'authcodeE'到'authcode'以使XML格式良好。考慮一下。 – zx485