Pregunta

Digamos que tengo el siguiente 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>

... ¿cuál sería el XPath que devuelve que el " bucket " contiene " rojo " y " azul " ;?

¿Fue útil?

Solución

Si está utilizando XSLT, le recomiendo configurar una clave:

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

Puede obtener el <tent> dentro de <base> con un key particular usando

key('tents', $id)

Entonces puedes hacer

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

o, si $bucket es un elemento <bucket> particular,

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

Otros consejos

Creo que esto funcionará:

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

No es bonito. Como con cualquier búsqueda, debe usar current ():

/ root / bucket [/ root / base / tent [@key = current () / tent / @ key] / @ color = 'blue' o / root / base / tent [@key = current () / tent / @ clave] / @ color = 'rojo']

JeniT tiene la respuesta / código apropiado enumerado aquí. Debe crear la clave antes de recorrer el documento XML, luego realizar coincidencias con esa clave.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top