Mostrando entradas con la etiqueta xsl cookbook xpath. Mostrar todas las entradas
Mostrando entradas con la etiqueta xsl cookbook xpath. Mostrar todas las entradas

lunes, 10 de agosto de 2009

XPATH Cookbook

I have been working for 2 years with several XML related tecnology, (Web services, XML firewalls, etc) and during this time i have been collecting recipes to get information from XML documents with xpath. I finally put them here because every time I had to come back working with xml, I had to refresh my knowledge with the rules and syntax, again and again...

Basic Selections


Select a node in a tree
/person/name

Select the first element of a nodeset
/person/names[1]


Select an attribute of an predifined element

xpath
/root/saludo/@idioma

Select an attribute with namespace
/root/*[namespace-uri()='http://geronimo' and local-name()='saludo']/@idioma

Find an element in any part of the document named "entidad"
//*[local-name()='entidad']

Find an element named Body no matter what namespace you are using
/*[local-name()='Envelope']/*[local-name()='Body']/*

Find an element with the namespace named test.com and an element named element1
//*[namespace-uri()='http://test.com1' and local-name()='element1']

Find an all document an element whose namespace is "http://test.com"
//*[namespace-uri()='http://test.com1']

Function to emulate indexOf (java)
<pre><xsl:function name="eg:index-of" as="xs:integer">
<xsl:param name="a1" as="xs:string?">
<xsl:param name="a2" as="xs:string?">
<xsl:sequence select="string-length(substring-before($a1, $a2)">
</xsl:sequence>
</xsl:param></xsl:param></xsl:function></pre>