2017-05-26 189 views
0

如何選擇'消息'節點,其中任何子節點的值爲'EXCEPTION'。XSLT選擇子節點中存在值的父節點

<?xml version="1.0" encoding="UTF-8"?> 
<Envelope> 
<Message> 
    <MessageId>1</MessageId> 
    <Merchant> 
     <Type>Supplier</Type> 
     <Id>23</Id> 
    </Merchant> 
    <Operation>Create</Operation> 
    <SKU>AVRCD_002</SKU> 
    <Attribute> 
     <country>South Africa</country> 
     <artist>Anneli Van Rooyen</artist> 
     <composer>Anneli Sale</composer> 
    </Attribute> 
</Message> 
<Message> 
    <MessageId>2</MessageId> 
    <Merchant> 
     <Type>Supplier</Type> 
     <Id>EXCEPTION</Id> 
    </Merchant> 
    <Operation>Create</Operation> 
    <SKU>AVRCD_002</SKU> 
    <Attribute> 
     <country>EXCEPTION</country> 
     <artist>Anneli Van Rooyen|Lorenzo Tieghi</artist> 
     <composer>Sale Anneli</composer> 
    </Attribute> 
</Message> 
</Envelope> 

下面你需要指定確切的孩子。我不想這樣做。我只是想/如果任何內容中有'EXCEPTION'的值。

<xsl:copy-of select="/Envelope/Message[Attribute/country = 'EXCEPTION' or Merchant/Id = 'EXCEPTION']"/> 

回答

0

試試這個,以查找所有後代文本節點等於「EXCEPTION」

<xsl:copy-of select="/Envelope/Message[.//text() = 'EXCEPTION']"/> 
+0

完美的感謝,我得到接近,但不可能得到它100% –

+0

但要小心,@ LorenzoTieghi,因爲一個節點作爲字符串值爲「EXCEPTION」的文本節點的父節點不一定與該節點的* own *字符串值爲「EXCEPTION」相同。混合內容的元素可能會出現差異。前者可能確實是你想要的,但你應該對此滿足。 –