You are on page 1of 13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

XPath:XMLPathlanguage
QuesXPath
rboldeldocumento
Tiposdenodos
SintaxisexpresionesXPath
Sintaxisabreviada
Eje(axis)
Predicado(predicate)
Seleccinnodos(nodetest)
Pasosconsecutivos
Expresionesanidadas

QuesXPath
XPathesunlenguajequepermiteseleccionarnodosdeundocumentoXMLycalcularvaloresa
partirdesucontenido.ExistentresversionesdeXPathaprobadasporelW3C,aunquelaversin
msutilizadasiguesiendolaversin1:
noviembrede1999:XMLPathLanguage1.0
enerode2007:XMLPathLanguage2.0
diciembrede2010:XMLPathLanguage2.0(2edicin)
abrilde2014:XMLPathLanguage3.0

rboldeldocumento
XPathconsideraun documento XML como un rbol de nodos. En Informtica,unrbolesuna
estructura de datos que equivale a un rbol matemtico. En Matemticas un rbol es un caso
particulardegrafo.Lossiguientestrminosdefinidosenteoradegrafosseutilizantambinen
InformticayenXPath:
Un
grafo
es un

conjuntodeobjetosllamadosnodosovrticesunidosporenlacesllamadosarcosoaristas.
Ungrafodirigidoesungrafoenelquelosarcostienendireccin.
Cuandodosnodosestnunidosporunarcocondireccin,el
nodopadreeselnododelqueparteelarcoyelnodohijo
eselnodoalquellegaelarco.

Unrbolesungrafoenelquecualquierparejadevrticesestnconectadaporunnico
camino (es decir, que no hay ciclos). Un rboldirigido es un rbol en el que las aristas
tienendireccinytodoslosnodosmenosunotienenunnicopadre.

http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

1/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

El nodo raz de un rbol dirigido es el nico


nodosinpadre.Losnodoshermanossonlos
nodosquetienenelmismopadre.

Los

nodos

descendientesdeunnodosontodoslosnodosalosquesellegadesdeelnodo:loshijos,
loshijosdeloshijos,etc.Losnodosascendientesdeunnodosontodoslosnodosdelos
queunnodoesdescendiente:elpadre,elpadredelpadre,etc.

Tiposdenodos
UndocumentoXMLpuederepresentarsecomounrboldirigido,considerandoporejemplolos
elementos como nodos y que un elemento es padre de los elementos que contiene. Pero en
XPathnosloloselementossonnodos,enrealidadhaysietetiposdenodos:
Raz
Elemento
Atributo
Texto
Comentario
Instruccindeprocesamiento
Espaciodenombres
Nota:LadeclaracinDOCTYPEnoseconsideracomonodo.
Porejemplo,eldocumentoXMLsiguiente:
<?xmlversion="1.0"encoding="UTF8"?>
http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

2/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

<biblioteca>
<libro>
<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>
</biblioteca>

sepuederepresentarmedianteelsiguientegrafo:

Losnodosatributosydetextonosoncomolosnodoselemento.Porejemplo,losnodosatributo
ydetextonopuedentenerdescendientes.Enrealidadelnodoatributonisiquieraseconsidera
comohijo,sinocomounaetiquetaadosadaalelemento.Eltextocontenidoporunaetiquetas
que se considera hijo del elemento, aunque las expresiones XPath suelen trabajar con nodos
elementoyparareferirsealosatributosoaltextoseutilizannotacionesespeciales.

SintaxisdelaexpresionesXPath
Una expresin XPath es una cadena de texto que representa un recorrido en el rbol del
documento.Lasexpresionesmssimplesseparecenalasrutasdelosarchivosenelexplorador
http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

3/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

deWindowsoenlashelldeGNU/Linux.
EvaluarunaexpresinXPathesbuscarsihaynodoseneldocumentoqueseajustanalrecorrido
definidoenlaexpresin.Elresultadodelaevaluacinsontodoslosnodosqueseajustanala
expresin.ParapoderevaluarunaexpresinXPath,eldocumentodebeestarbienformado.
LasexpresionesXPathsepuedenescribirdedosformasdistintas:
sintaxisabreviada:mscompactayfcildeleer,queseexplicaenestaleccin
sintaxiscompleta:mslargaperoconmsopcionesdisponibles
Las expresiones XPath se pueden dividir en pasos de bsqueda. Cada paso de bsqueda se
puedeasuvezdividirentrespartes:
eje:seleccionanodoselementooatributobasndoseensusnombres.
predicado:restringelaseleccindelejeaquelosnodoscumplanciertascondiciones.
seleccin de nodos: de los nodos seleccionados por el eje y predicado, selecciona los
elementos,eltextoquecontienenoambos.

Sintaxisabreviada
Veamos unos ejemplos de expresiones XPath de sintaxis abreviada y el resultado de su
evaluacineneldocumentodeejemploanterior:
<?xmlversion="1.0"encoding="UTF8"?>
<biblioteca>
<libro>
<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>
</biblioteca>

Eje(eningls,axis)
El eje nos permite seleccionar un subconjunto de nodos del documento y corresponde a
recorridos en el rbol del documento. Los nodos elemento se indican mediante el nombre del
elemento.Losnodosatributoseindicanmediante@yelnombredelatributo.
/:siestalprincipiodelaexpresin,indicaelnodoraz,sino,indica"hijo".Debeirseguida
delnombredeunelemento.
/biblioteca/libro/autor

<autor>MilanKundera</autor>
<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>

/autor

Nodevuelvenadaporque<autor>noeshijo
delnodoraz.

/biblioteca/autor

Nodevuelvenadaporque<autor>noeshijo

http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

4/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

de<biblioteca>.
/biblioteca/libro/autor/@fechaNacimiento

/biblioteca/libro/@fechaNacimiento

fechaNacimiento="28/03/1936"
fechaNacimiento="28/03/1936"

Nodevuelvenadaporque<libro>notieneel
atributofechaNacimiento.

Nota:EnXPath1.0nosepuedeseleccionarnicamenteelvalordelatributo,sinoquese
obtienenrespuestasdeltiponombreDelAtributo=ValorDelAtributo
//:indica"descendiente"(hijos,hijosdehijos,etc.).
/biblioteca//autor

//autor

//autor//libro
//@ao

<autor>MilanKundera</autor>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>

<autor>MilanKundera</autor>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>

Nodevuelvenadaporque<libro>noesdescendientede<autor>.
ao="1973"
ao="1973"
ao="1969"

/..:indicaelelementopadre.
/biblioteca/libro/autor/@fechaNacimiento/..

//@fechaNacimiento/../..

<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>

<libro>
<titulo>Pantalenylas
visitadoras</titulo>
<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenla
catedral</titulo>
<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>

Nota: En estos ejemplos se seleccionan nicamente los nodos que tienen el atributo
fechaNacimiento.
|:permiteindicarvariosrecorridos.
//autor|//titulo

<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>

http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

5/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

//autor|//titulo|//@ao

<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
ao="1973"
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
ao="1973"
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
ao="1969"

Predicado(eningls,predicate)
Elpredicadoseescribeentrecorchetes,acontinuacindeleje.Sielejehaseleccionadounos
nodos, el predicado permite restringir esa seleccin a los que cumplan determinadas
condiciones.
[@atributo]:seleccionaloselementosquetienenelatributo.
//autor[@fechaNacimiento]

<autorfechaNacimiento="28/03/1936">MarioVargas
Llosa</autor>
<autorfechaNacimiento="28/03/1936">MarioVargas
Llosa</autor>

[nmero]: si hay varios resultados selecciona uno de ellos por nmero de orden last()
seleccionaelltimodeellos
//libro[1]

//libro[last()]

//libro[last()1]

<libro>
<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
</libro>

<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>

<libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>

[condicion]:seleccionalosnodosquecumplenlacondicin.
Los predicados permiten definir condiciones sobre los valores de los atributos. En las
condicionessepuedenutilizarlosoperadoressiguientes:
operadoreslgicos:and,or,not()
operadoresaritmticos:+,,*,div,mod
operadoresdecomparacin:=,!=,<,>,<=,>=
Lascomparacionessepuedenhacerentrevaloresdenodosyatributosoconcadenasde
textoonumricas.Enelcasodelascadenasdetextodebenestarrodeadeasporcomillas
simplesodobles.Enelcasodelascadenasnumricas,lascomillassonoptativas.
La condicin puede utilizar el valor de un atributo (utilizando @) o el texto que
contieneelelemento.
http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

6/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

En los ejemplos siguientes se obtienen respectivamente los elementos


<fechaPublicacion> cuyo atributo ao es posterior/mayor a 1970 y los elementos
<libro>cuyosubelemento<autor>tienecomocontenido"MarioVargasLLosa":
//fechaPublicacion[@ao>1970]

//libro[autor="MarioVargas
Llosa"]

<fechaPublicacionao="1973"/>
<fechaPublicacionao="1973"/>

<libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>

Parahacerreferenciaalpropiovalordelelementoseleccionadoseutilizaelpunto(.).
//@ao[.>1970]

//autor[.="MarioVargas
Llosa"]

ao="1973"
ao="1973"

<autorfechaNacimiento="28/03/1936">MarioVargas
Llosa</autor>
<autorfechaNacimiento="28/03/1936">MarioVargas
Llosa</autor>

Sepuedenescribirvariospredicadosseguidos,cadaunodeloscualesrestringelos
resultadosdelanterior,comosiestuvieranencadenadosporlaoperacinlgicaand.
En el ejemplo siguiente se seleccionan los libros escritos por Mario Vargas Llosa y
publicadosen1973:
//libro[autor="MarioVargasLlosa"]
[fechaPublicacion/@ao="1973"]

<libro>
<titulo>Pantalenylas
visitadoras</titulo>
<autor
fechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>

Unpredicadopuedecontenercondicionescompuestas.
En los ejemplos siguientes se seleccionan, respectivamente , los libros escritos por
Mario Vargas Llosa y publicados en 1973 (primer ejemplo) y los libros escritos por
MarioVargasLlosaopublicadosen1973(segundoejemplo):
//libro[autor="MarioVargasLlosa"and
fechaPublicacion/@ao="1973"]

//libro[autor="MarioVargasLlosa"or
http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

<libro>
<titulo>Pantalenylas
visitadoras</titulo>
<autor
fechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>

<libro>
7/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

fechaPublicacion/@ao="1973"]

<titulo>Lavidaestenotra
parte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Pantalenylas
visitadoras</titulo>
<autor
fechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenla
catedral</titulo>
<autor
fechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>

Seleccindenodos(eningls,nodetest)
Laseleccindenodosseescribeacontinuacindelejeyelpredicado.Sielejeyelpredicado
han seleccionado unos nodos, la seleccin de nodos indica con qu parte de esos nodos nos
quedamos.
/node():seleccionatodosloshijos(elementosotexto)delnodo.
//node():seleccionatodoslosdescendientes(elementosotexto)delnodo.
//libro/node()

//autor/node()

//libro//node()

<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1973"/>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1969"/>

MilanKundera
MarioVargasLlosa
MarioVargasLlosa

<titulo>Lavidaestenotraparte</titulo>
Lavidaestenotraparte
<autor>MilanKundera</autor>
MilanKundera
<fechaPublicacionao="1973"/>
<titulo>Pantalenylasvisitadoras</titulo>
Pantalenylasvisitadoras
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
MarioVargasLlosa
<fechaPublicacionao="1973"/>
<titulo>Conversacinenlacatedral</titulo>
Conversacinenlacatedral
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
MarioVargasLlosa
<fechaPublicacionao="1969"/>

/text():seleccionanicamenteeltextocontenidoenelnodo.
http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

8/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

//text():seleccionanicamenteeltextocontenidoenelnodoytodossusdescendientes.
//autor/text()

//libro/text()
//libro//text()

MilanKundera
MarioVargasLlosa
MarioVargasLlosa

Nodevuelvenadaporque<libro>nocontienetexto.
Lavidaestenotraparte
MilanKundera
Pantalenylasvisitadoras
MarioVargasLlosa
Conversacinenlacatedral
MarioVargasLlosa

/*:seleccionatodosloshijos(sloelementos)delnodo.
//*:seleccionatodoslosdescendientes(sloelementos)delnodo.
/biblioteca/*

//autor/*
/biblioteca//*

<libro>
<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>

Nodevuelvenadaporque<autor>slocontienetexto.
<libro>
<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
</libro>
<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
<libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1973"/>
<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1969"/>

/@*:seleccionatodoslosatributosdelnodo.
//@*:seleccionatodoslosatributosdelosdescendientesdelnodo.
http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

9/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

//@*

ao="1973"
fechaNacimiento="28/03/1936"
ao="1973"
fechaNacimiento="28/03/1936"
ao="1969"

//libro/@*

Nodevuelvenadaporque<libro>notieneatributos.

//autor/@*

fechaNacimiento="28/03/1936"
fechaNacimiento="28/03/1936"

Nota:EnXPath1.0nosepuedeseleccionarnicamenteelvalordelatributo,sinoquese
obtienenrespuestasdeltiponombreDelAtributo=ValorDelAtributo

Pasosdebsquedaconsecutivos
UnaexpresinXPathpuedecontenervariospasosdebsquedaconsecutivos.Cadaunoincluir
su eje (y en su caso, su predicado) y el ltimo paso de bsqueda incluir en su caso una
seleccindenodos.Cadapasodebsquedatrabajaapartirdelosnodosseleccionadosporel
pasodebsquedaanterior.
En el ejemplo siguiente se obtienen los ttulos de los libros publicados despus de 1970,
mediantedospasosdebsqueda:
en el primer paso (//fechaPublicacion[@ao>1970]) se seleccionan los elementos
<fechaPublicacion>cuyoatributoaoessuperiora1970.
en el segundo paso (/../titulo), se seleccionan primero los elementos padre (/..) de los
<fechaPublicacion> seleccionados en el primer paso de bsqueda (es decir, elementos
<libro>)yacontinuacinsussubelementos<titulo>.
//fechaPublicacion[@ao>1970]/../titulo

<titulo>Lavidaestenotraparte</titulo>
<titulo>Pantalenylasvisitadoras</titulo>

Un determinado resultado se puede obtener mediante un slo paso de bsqueda o mediante


variospasos.
En los ejemplos siguientes se obtienen los libros escritos por Mario Vargas Llosa de dos
formasdistintas:
mediante un slo paso de bsqueda. Se seleccionan los elementos <libro> cuyo
subelemento<autor>tienecomocontenidolacadena"MarioVargasLlosa".
//libro[autor="MarioVargas
Llosa"]

<libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargas
Llosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargas
Llosa</autor>
<fechaPublicacionao="1969"/>
</libro>

mediante dos pasos de bsqueda. En el primer paso se seleccionan los elementos


<autor> cuyo contenido es la cadena "Mario Vargas Llosa". En el segundo paso de
bsquedaseseleccionanloselementospadre(esdecir,loselementos<libro>).
//autor[.="MarioVargas
Llosa"]/..
http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

<libro>
<titulo>Pantalenylasvisitadoras</titulo>
10/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

<autorfechaNacimiento="28/03/1936">MarioVargas
Llosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargas
Llosa</autor>
<fechaPublicacionao="1969"/>
</libro>

En los ejemplos siguientes se obtiene el autor que ha publicado libros en 1969 de varias
formasdistintas:
//@ao[.=1969]/../../autor

//libro[fechaPublicacion/@ao=1969]/autor

//fechaPublicacion[@ao=1969]/../autor

//autor[../fechaPublicacion/@ao=1969]

<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>

<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>

<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>

<autorfechaNacimiento="28/03/1936">Mario
VargasLlosa</autor>

Expresionesanidadas
Las expresiones XPath pueden anidarse, lo que permite definir expresiones ms complicadas.
Porejemplo,eneldocumentoutilizadoanteriormente:
<?xmlversion="1.0"encoding="UTF8"?>
<biblioteca>
<libro>
<titulo>Lavidaestenotraparte</titulo>
<autor>MilanKundera</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Pantalenylasvisitadoras</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1973"/>
</libro>
<libro>
<titulo>Conversacinenlacatedral</titulo>
<autorfechaNacimiento="28/03/1936">MarioVargasLlosa</autor>
<fechaPublicacionao="1969"/>
</libro>
</biblioteca>

Unejemplodeexpresinanidadasera,porejemplo,obtenerlosttulosdeloslibrospublicados
elmismoaoquelanovela"Lavidaestenotraparte".Estainformacinnoestdirectamente
almacenadaeneldocumento,perosepuedeobtenerlarespuestaendospasos:
obtenerprimeroelaoenquesepubliclanovela"Lavidaestenotraparte":
//libro[titulo="Lavidaestenotraparte"]/fechaPublicacion/@ao

ao="1973"

yobtenerdespuslosttulosdeloslibrospublicadosen1973:
http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

11/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

//libro[fechaPublicacion/@ao=1973]/titulo

<titulo>Lavidaestenotraparte</titulo>
<titulo>Pantalenylas
visitadoras</titulo>

Estas dos expresiones se pueden unir en una nica expresin, sustituyendo en la segunda
expresinelvalor1973porlaprimeraexpresin:
//libro[fechaPublicacion/@ao= //libro[titulo="Lavidaesten
otraparte"]/fechaPublicacion/@ao ]/titulo

<titulo>Lavidaesten
otraparte</titulo>
<titulo>Pantalenylas
visitadoras</titulo>

Comocadaunadelasexpresionespuedeescribirsedevariasmaneras,enrealidadhaymuchas
formas de encontrar la respuesta. Por ejemplo, en la solucin siguiente los predicados se
encuentranalfinaldelejeencadasubexpresin:
//titulo[../fechaPublicacion/@ao= //@ao[../../titulo="La
vidaestenotraparte"] ]

<titulo>Lavidaestenotra
parte</titulo>
<titulo>Pantalenylas
visitadoras</titulo>

Otroejemplodeexpresinanidadaseraobtenerlosttulosdeloslibrosdelmismoautorquela
novela"Pantalenylasvisitadoras".Comoenelejemploanterior,larespuestapuedeobtenerse
endospasos:
obtenerprimeroelautordelanovela"Pantalenylasvisitadoras":
//libro[titulo="Pantalenylasvisitadoras"]/autor/text()

MarioVargasLlosa

yobtenerdespuslosttulosdeloslibrosescritosporMarioVargasLLosa:
//libro[autor="MarioVargasLlosa"]/titulo

<titulo>Pantalenylasvisitadoras</titulo>
<titulo>Conversacinenlacatedral</titulo>

Estas dos expresiones se pueden unir en una nica expresin, sustituyendo en la segunda
expresinelvalor"MarioVargasLlosa"porlaprimeraexpresin:
//libro[autor= //libro[titulo="Pantalenylas
visitadoras"]/autor/text() ]/titulo

<titulo>Pantalenylas
visitadoras</titulo>
<titulo>Conversacinenla
catedral</titulo>

Undetalleimportanteesquenohayqueescribirlaprimeraexpresinentrecomillas.
Incluso se puede omitir la seleccin de nodos /text() de la segunda expresin y escribir la
expresinXPathas:
//libro[autor= //libro[titulo="Pantalenylas
visitadoras"]/autor ]/titulo

<titulo>Pantalenylas
visitadoras</titulo>
<titulo>Conversacinenla
catedral</titulo>

ltimamodificacindeestapgina:11demayode2015

http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

12/13

10/5/2016

XPath:XMLPathlanguage.XML.BartolomSintesMarco

EstapginaformapartedelcursoXML:LenguajedemarcasextensibleporBartolomSintes
Marco
quesedistribuyebajounaLicenciaCreativeCommonsReconocimientoCompartirIgual4.0
Internacional(CCBYSA4.0).

http://www.mclibre.org/consultar/xml/lecciones/xml_xpath.html

13/13