我在下面的XML工作:紅寶石的libxml - 如果一個節點存在,過濾器基於價值
<digiprovMD ID="digiprov-3">
<mdWrap MDTYPE="PREMIS">
<xmlData>
<agent>
<agentIdentifier>
<agentIdentifierType>URI</agentIdentifierType
<agentIdentifierValue>info:fda/system-v0.16.2</agentIdentifierValue>
<agentIdentifierResult>outcome</agentIdentifierResult>
</agentIdentifier>
<agentName>DAITSS Account: UF</agentName>
<agentType>Affiliate</agentType>
</agent>
</xmlData>
</mdWrap>
</digiprovMD>
<digiprovMD ID="digiprov-4">
<mdWrap MDTYPE="PREMIS">
<xmlData>
<agent>
<agentIdentifier>
<agentIdentifierType>URI</agentIdentifierType>
<agentIdentifierValue>info:fda/system-v0.16.2</agentIdentifierValue>
</agentIdentifier>
<agentName>daitss system (v0.16.2)</agentName>
<agentType>software</agentType>
</agent>
</xmlData>
</mdWrap>
</digiprovMD>
<digiprovMD ID="digiprov-5">
<mdWrap MDTYPE="PREMIS">
<xmlData>
<agent>
<agentIdentifier>
<agentIdentifierType>URI</agentIdentifierType>
<agentIdentifierValue>info:fda/system-v0.16.2</agentIdentifierValue>
<agentIdentifierResult>source</agentIdentifierResult>
</agentIdentifier>
<agentIdentifier>
<agentIdentifierType>URI</agentIdentifierType>
<agentIdentifierValue>someotheruri</agentIdentifierValue>
<agentIdentifierResult>outcome</agentIdentifierResult>
</agentIdentifier>
<agentName>daitss system (v0.16.2)</agentName>
<agentType>software</agentType>
</agent>
</xmlData>
</mdWrap>
</digiprovMD>
我想選擇與agentIdentifierValue的特定值的所有代理說信息:FDA /系統-V0 .16.2,只有 1.它具有與其關聯沒有agentIdentifierResult標籤和 2.如果有與它assocaited的agentIdentifierResult其值應爲「結果」
因此,在這種情況下,這兩種藥物,digiprov-3和應該選擇digiprov-4。 如何爲此寫入xpath?
我嘗試這樣做(僞代碼): (結果=結果和值= '#{uri.content}')或(值= '#{uri.content}') 但這選擇第三劑digiprov-5呢!
XML是否正確? 'digiprov-5'應該有兩個agentIdentifier節點嗎? –
@JustinKo:是的,XML是正確的。它應該有兩個agentIdentifier節點 – aakash