xml - regulares - Comodines XPath en el nombre del nodo
xpath and xslt (3)
Con XPath 1.0 puede usar el patrón /data/stats/*[substring-after(name(), ''_cost'') = '''']
. Eso verifica si el nombre del elemento termina con el sufijo _cost
. En XPath 2.0 hay fn:ends-with(str, str)
y su expersión correspondiente será *[ends-with(name(), ''_cost'')]
.
Quiero tomar un nodo de mi archivo XML, el nodo tiene un prefijo como "latest_", pero esto puede cambiar y me gustaría que mi XSLT sea lo más fluido posible. Aquí está el XPath que quiero usar:
/data/stats/*_cost
Esto debería coincidir con latest_cost
, newest_cost
, anything_cost
. ¿Hay alguna forma de hacerlo?
Saludos :-)
Esta es la expresión correcta de XPath 1.0 que selecciona un elemento con los últimos 5 caracteres de nombre igual a "_cost" en cualquier espacio de nombres.
/data/stats/*[substring(name(), string-length(name()) - 4) = ''_cost'']
También puedes usar contains
p.ej
/data/stats[contains(.,''_cost'')]