Próbuję zbudować złożone wyrażenie xpath, które odpowie na następujący warunek.Wyrażenie Xpath z wieloma predykatami
Z danych XML poniżej, zwraca użytkownika podmiot, który:
- Jego loginname jest "user1"
- Nazywa się "Użytkownik 1"
Ma 2 różne wartości profili: "operator" i "admin" (Nie znam Kolejność ct naprzód)
<user> <login>user1</login> <name>User 1</name> <profile> <value>admin</value> <id>2</id> <description>admin users</description> </profile> <profile> <value>operator</value> <id>1</id> <description>Operator</description> </profile> </user> <user> <login>user2</login> <name>User 2</name> <profile> <value>admin</value> <id>4</id> <description>admins users</description> </profile> <profile> <value>poweruser</value> <id>5</id> <description>power users</description> </profile> </user> </root>
Może ktoś proszę podać przykład do takiej sytuacji?
EDIT: Dodano kompleks podmiot profil
Dzięki za szybkie rozwiązanie. Czy mogę używać XPATH takiego jak ten, lub może on zmienić logikę: /root/user [login = 'user1'] [name = 'User 1'] [profil [value = 'admin']] [profil [ value = 'operator']] – user41767
Interesujące - nie wiedziałem, że możesz mieć wiele bloków predykatów, ale tak, wygląda na to, że to też działa. Fajnie, teraz nauczyłem się także czegoś :-) –
Wiele predykatów funkcjonuje tylko jako ORAZ oczywiście rozszerzona składnia daje również LUB, ale ja wolę wielokrotność dla jasności. Możesz także zrobić to z osiami takimi jak poprzednie-rodzeństwo, ale byłoby to nieco rozwlekłe w przypadku prostego przykładu. – annakata