Die XML-Datei hat dieses Snippet:
%Vor%Ich habe versucht, es mit der globalen Suche von xpath zu analysieren und habe es auch mit einem Namespacing versucht:
%Vor%Sollte der xpath nicht übereinstimmen:
%Vor% Da der Standardnamespace der NIH ist (dessen URI "http://www.ncbi.nlm.nih.gov" lautet), <PC-XRefData_pmid>
(und jedes andere Element in Ihrem XML-Dokument, das kein Namespacepräfix hat) ist in diesem NIH-Namensraum.
Um sie mit einem XPath abzugleichen, müssen Sie Ihrem XPath-Prozessor mitteilen, welches Präfix Sie für den NIH-Namespace verwenden, und Sie müssen dieses Präfix in Ihrem XPath verwenden.
Also, ohne R zu kennen, würde ich versuchen
%Vor%oder sonst
%Vor%, da letzteres Namespaces umgeht.
Nur weil das XML-Dokument den NIH-Namespace als Standard deklariert, heißt das nicht, dass der XPath-Prozessor das weiß. Im XML-Informationsmodell sind Namespace-Präfixe nicht von Bedeutung. Wenn ich also ein XML-Dokument analysiere, ist es egal, ob der NIH-Namespace an das Präfix "nih:" oder "snizzlefritz" gebunden ist : "Präfix oder" "(Standard) Präfix. Der XML-Parser oder XPath-Prozessor sollte nicht wissen müssen, welches Präfix an welchen Namespace im XML-Dokument gebunden wurde. Zumal es an verschiedenen Stellen im selben Dokument mehrere verschiedene Präfixe geben kann, die an denselben Namespace gebunden sind ... und umgekehrt. Wenn Sie möchten, dass Ihr XPath-Ausdruck einem Element entspricht, das sich in einem Namespace befindet, müssen Sie diesen Namespace dem XPath-Prozessor deklarieren.
Bearbeiten: Es gibt ein paar Vorbehalte, die von @Jim Pivarski beigetragen wurden:
Wenn also "doc" eine Instanz einer Dokumentenklasse ist, lautet die richtige Lösung:
%Vor%Dies ist FAQ.
Dies: //PC-XRefData_pmid
Bedeutet: any PC-XRefData_pmid
im Dokument unter keinem Namespace oder leerem Namespace
Es bedeutet nicht PC-XRefData_pmid
im Dokument unter dem Standard-Namespace
Außerdem ist Ihr Dokumentmuster nicht vollständig, aber Ihr PC-XRefData_pmid
-Element scheint unter http://www.ncbi.nlm.nih.gov
namespace