2017-05-26 18 views
0

子ノードが 'EXCEPTION'の値を持つ 'Message'ノードを選択する方法を教えてください。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

、同等に「例外」

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

パーフェクトおかげである任意の子孫のテキストノードをチェックしており、代わりにこれを試してみてください、私は近いものになったけど、それは100% –

+0

取得しかし、注意してくださいcouldntの@ LorenzoTieghi。文字列値が 'EXCEPTION'であるテキストノードの親であるノードは、そのノードの*文字列値が ''EXCEPTION ''である必要はありません。内容が混在している要素の区別ができます。前者は確かにあなたが望むものであるかもしれませんが、あなたはそれについて自分自身を満足させるべきです。 –

関連する問題