2016-09-05 4 views
0

Ich habe XML wie:Wie erhalten Sie Attribut-Inhalt durch einen anderen Attributwert mit XPath?

<?xml version='1.0' encoding='UTF-8'?> 
<ClinicalDocument xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
        xmlns='urn:hl7-org:v3' 
        xmlns:ext='urn:hl7-RU-EHR:v1' 
        xsi:schemaLocation='urn:hl7-org:v3'> 
    <author> 
     <time value='20160809000000+0300'/> 
     <assignedAuthor> 
      <id root='1.2.643.5.1.13.3.25.1.1.100.1.1.70' extension='1'/> 
      <id root='1.2.643.100.3' extension='03480134121'/> 
      <id nullFlavor='NI'/> 
     </assignedAuthor> 
    </author> 
</ClinicalDocument> 

I extension in id mit root ‚s-Wert erhalten müssen = 1.2.643.100.3. Ich muss XPath 2.0 verwenden. Ich habe versucht:

  1. *[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[name()='id' and @id='1.2.643.100.3']/@extension. Nicht in Betrieb
  2. /*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[name()='id'][2]/@extension, aber Bestellung id s kann gemischt werden. So dass, sollte ich von id ‚s Wert

Es ist erforderlich, um mich Abrufen für das Abrufen Wert von Java XPathExpression

Antwort

0

Korrekter XPath: /*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[local-name()='id' and @root='1.2.643.100.3']/@extension

1

Zuerst binden Namespacepräfix, u:-urn:hl7-org:v3.

Dann wird diese XPath,

//u:id[@root='1.2.643.100.3']/@extension 

wird 03480134121 zurückkehren, wie gewünscht.

Wenn Sie nicht in der Lage sind ein Namespacepräfix zu binden, können Sie stattdessen diese XPath verwenden können,

//*[local-name() ='id' and @root='1.2.643.100.3']/@extension 

die auch 03480134121 zurückkehren wird, wie gewünscht.

Verwandte Themen