2011-10-31 3 views
1

XPath opérateur AND avec le texte() Si le XML est défini par ce qui suit:séquence

<xs:complexType name="Whatever" ....> 
    <xs:sequence> 
    <xs:element name="Tag" type="xs:string" minOccurs="0" maxOccurs="unbounded"> 
    </xs:sequence> 
</xs:complextType> 

un document peut contenir:

<ns:Whatever> 
    <ns:Tag>hello</ns:Tag> 
    <ns:Tag>Peter</ns:Tag> 
    <ns:Tag>how are you</ns:Tag> 
</ns:Watever> 

ou il pourrait contenir:

<ns:Whatever> 
    <ns:Tag>hello</ns:Tag> 
</ns:Watever> 

Comment écrit-on une expression XPath pour trouver des éléments XML Whatever une union de Tag éléments comp le text() avec un opérateur AND? L'écriture /ns:Whatever[ns:Tag/text() = ('hello','Peter','how are you')] correspond aux deux documents ci-dessus. Je veux seulement correspondre lorsque le texte de Tag est égal à 'hello' ET 'Peter' ET 'how are you'.

+0

Je ne sais pas ce que cela est, mais il est certainement pas un fichier .xml valide. Si vous le réparez, nous pourrons répondre à votre question. Une balise, avec ou sans espace de nom doit se fermer avec la même balise exacte. – FailedDev

+0

Supposons que vous vous référez à l'orthographe "ns: Watever" qui devrait avoir ben "ns: Whatever". –

+0

J'ai édité votre post parce que c'était complètement faux. – FailedDev

Répondre

0

Espérons que votre fichier .xml contient des fautes de frappe.

Vous devez l'opérateur ou pas et:

<xsl:value-of select="/ns:Whatever/ns:Tag[ . = 'hello' or . = 'Peter' or . = 'how are you']"/> 
+0

Ne fonctionne pas. Ou en tant qu'opérateur correspond même des éléments de balise avec des entrées uniques. –

+0

@MatthewYoung Que voudriez-vous faire? Je suis confus par votre description. – FailedDev

+0

Prenez le fragment de document XML ci-dessus avec les 3 éléments Tag. Il y a un Tag commun "bonjour" avec le fragment avec seulement 1 Tag. En utilisant l'opérateur "ou", les deux fragments sont retournés, car chacun a un Tag avec 'bonjour' comme valeur textuelle. Je veux une opération de style "et" pour correspondre à un fragment quand il y a des éléments Tag qui sont égaux à plusieurs valeurs. –