xml - relaciones - llave secundaria sql
¿Puede XPath hacer una búsqueda de clave externa en dos subárboles de un XML? (4)
Creo que esto funcionará
/root/base/tent[/root/bucket/tent/@key = @key ]/@color
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 "cubo" contiene "rojo" y "azul"?
No es lindo. Como con cualquier búsqueda, necesita usar current ():
/ root / bucket [/ root / base / tent [@key = current () / tent / @ key] / @ color = ''blue'' o / root / base / tent [@key = current () / tent / @ key ] / @ color = ''rojo'']
Si está utilizando XSLT, le recomiendo configurar una clave:
<xsl:key name="tents" match="base/tent" use="@key" />
A continuación, puede obtener <tent>
dentro de <base>
con una 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
JeniT tiene la respuesta / el código apropiado enumerados aquí. Debe crear la clave antes de recorrer el documento XML y luego realizar coincidencias con esa clave.