0

私は次のXMLに取り組んでいます:

<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の特定の値を持つすべてのエージェントを選択したいのですが、1。agentIdentifierResultタグが関連付けられていない場合、および2.それに関連付けられたagentIdentifierResultがある場合、その値は次のようになります。 '結果'

したがって、この場合、digiprov-3とdigiprov-4の両方のエージェントを選択する必要があります。このためのxpathを作成するにはどうすればよいですか?

私はこれを試しました(擬似コード):(結果=結果と値='#{uri.content}')または(値='#{uri.content}')が、これは3番目のエージェントdigiprov-5も選択します!

4

1 に答える 1

1

これは機能するはずです:

'//digiprovMD[.//agentIdentifier[./agentIdentifierValue="info:fda/system-v0.16.2"][not(./agentIdentifierResult) or ./agentIdentifierResult = "outcome"]]'

基本的に、これは、指定されたagentIdentifierValue値を持つagentIdentifierノードを含み、agentIdentifierResultまたは「outcome」のagentIdentifierResultを含まないdigiprovMDノードを返します。

于 2012-10-12T16:51:25.233 に答える