Pergunta

Say Eu tenho o seguinte XML ...

<root>
  <base>
    <tent key="1" color="red"/>
    <tent key="2" color="yellow"/>
    <tent key="3" color="blue"/>
  </base>
  <bucket>
    <tent key="1"/>
    <tent key="3"/>
  </bucket>
</root>

... o que o XPath ser que os retornos que o "balde" contém "vermelho" e "azul"?

Foi útil?

Solução

Se você estiver usando XSLT, eu recomendo a criação de uma chave:

<xsl:key name="tents" match="base/tent" use="@key" />

Você pode então começar a <tent> dentro <base> com um key particular usando

key('tents', $id)

Em seguida, você pode fazer

key('tents', /root/bucket/tent/@key)/@color

ou, se $bucket é um elemento <bucket> particular,

key('tents', $bucket/tent/@key)/@color

Outras dicas

Eu acho que isso vai funcionar:

/root/base/tent[/root/bucket/tent/@key = @key ]/@color

Não é bonito. Como acontece com qualquer pesquisa, você precisa usar atual ():

/ root / balde [/ root / base / tenda [@key = current () / tenda / @ key] / @ color = 'azul' ou / root / base / tenda [@key = current () / tenda / @ key] / @ color = 'vermelho']

JeniT tem a resposta / código apropriado aqui. Você precisa criar a chave antes que você ande o documento XML, em seguida, executar jogos contra essa chave.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top