J'essaie d'apprendre XPath, et j'ai du mal à faire une recherche imbriquée (using contains).xpath: contains() pour un groupe de réponses
Plus précisément, on m'a donné la question suivante:
Il y a une liste d'auteurs, et une liste de livres, selon la DTD suivante:
<!ELEMENT db1 (book*, author*)>
<!ELEMENT book (title)>
<!ATTLIST book
bid ID #REQUIRED
authors IDREFS #REQUIRED
>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ATTLIST author
aid ID #REQUIRED
>
Ecrire une expression XPath qui retourne la nombre d'auteurs qui ont écrit des livres. Il est possible de supposer qu'il n'y a pas deux identifiants d'auteur qui se contiennent les uns les autres.
J'ai essayé beaucoup de choses, mais je reçois toujours une erreur de "Trop d'éléments dans les contenus". Je suis en train de lancer quelque chose comme ceci:
//author/@aid[contains(//book/@authors/string(.), string(.))]
J'utilise le fichier XML suivant comme exemple:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE db1 SYSTEM "C:\blabla\db1.dtd">
<db1>
<book authors="a1 a3 a4" bid="b1">
<title>Book 1</title>
</book>
<book authors="a1 a2 a3" bid="b2">
<title>Book 2</title>
</book>
<book authors="a4" bid="b3">
<title>Book 3</title>
</book>
<author aid="a1"></author>
<author aid="a91"></author>
<author aid="a2"></author>
<author aid="a88"></author>
<author aid="a3"></author>
<author aid="a4"></author>
<author aid="a5"></author>
<author aid="a6"></author>
</db1>
La réponse attendue devrait être
a1 a2 a3 a4
Un conseil?
Merci.
Pouvez-vous fournir le document XML et le code que vous utilisez pour tester votre expression XPath? –
@AJ, j'ai ajouté l'exemple que j'utilisais. Espérons que cela aide .... – Anna
Expliquer la réponse attendue? Voulez-vous renvoyer les @ auteurs de l'enchère = 1? Ou voulez-vous retourner une liste unique d'auteurs avec les livres correspondants? –