2011-09-27 63 views
0

我试图检索一个(且仅一个)所述元件返回一个属性使用XPath给定多个条件

/Document/docOf/serviceEvent/effectiveTime/@value 

/Document/docOf/tempId/@root="1.3.5" 

的docOf元件可以在任何发生的发生顺序,并不能保证在temp中找到的是xml中的第一个。

我一直在尝试使用position()函数与tempId/@ root =“1.3.5” 结合使用,但发现它并不按我想要的方式工作。如果我写

tempId/@root="1.3.5" and position()=1 

我得到正确的结果,但只有当tempId/@根=“1.3.5”元素与其他tempIds的那些之前出现。如何从具有正确tempId/@ root的元素检索effectiveTime/@值并仅检索一次?

<Document> 
    <docOf> 
     <tempId root="1.3.2"codeSystem="11.2.3"/> 
     <serviceEvent> 
      <code code="UXZX0A"/> 
     </serviceEvent> 
    </docOf> 
    <docOf> 
     <tempId root="1.3.5"/> 
     <serviceEvent classCode="ACT"> 
      <effectiveTime value="20101122145613+0100"/> 
     </serviceEvent> 
    </docOf> 
    <docOf> 
     <tempId root="1.3.5"/> 
     <serviceEvent classCode="ACT"> 
      <effectiveTime value="20101122145613+0100"/> 
     </serviceEvent> 
    </docOf> 
    <docOf> 
     <tempId root="1.3.2"/> 
     <serviceEvent> 
      <code code="UXZX0A" codeSystem="11.2.3"/> 
     </serviceEvent> 
    </docOf> 
</Document> 

回答

1

尝试:

/Document/docOf[tempId/@root='1.3.5'][1]/serviceEvent/effectiveTime/@value 

它首先获取与根= 1.3.5所有文档,然后选择从该组的第一个节点。然后它从中提取value属性。

+0

谢谢!认为你正在做某件事。我现在的问题是将其转换为StyleVision中的输入,这是我工作的图形工具:S – zsaren