{"id":3304,"date":"2025-10-06T16:10:06","date_gmt":"2025-10-06T14:10:06","guid":{"rendered":"https:\/\/tecnologia.euroinnova.com\/que-es-xpath-todo-lo-que-debes-saber\/"},"modified":"2025-10-07T14:51:56","modified_gmt":"2025-10-07T12:51:56","slug":"que-es-xpath","status":"publish","type":"post","link":"https:\/\/tecnologia.euroinnova.com\/fr\/que-es-xpath","title":{"rendered":"Qu'est-ce que Xpath ? Tout ce qu'il faut savoir"},"content":{"rendered":"<p><strong>Xpath<\/strong> consiste en un <strong>lenguaje de consulta<\/strong>, usado para buscar y seleccionar elementos de un documento <strong>XML<\/strong>. \u00bfY qu\u00e9 es un documento <strong>XML<\/strong>? el World Wide Consortium (W3C), principal organizaci\u00f3n de est\u00e1ndares para la web, nos dice que se trata de \u00abun subconjunto de SGML que est\u00e1 dise\u00f1ado para ser usado en la web. Es un formato de texto simple y muy flexible derivado de SGML (ISO 8879)\u00bb.<\/p>\n<p>Un documento <strong>XML<\/strong> encierra una gran importancia, puesto que juega un papel crucial en el intercambio de datos en la web. Y claro, \u00bfc\u00f3mo navegar por los datos de un documento <strong>XML<\/strong>? Gracias a <strong>Xpath<\/strong>, que utiliza una sintaxis de criterios y funciones para completar c\u00e1lculos, comparaciones y para identificar nodos. En Euroinnova, te explicamos en profundidad en qu\u00e9 consiste <strong>Xpath<\/strong>.<\/p>\n<h2 id=\"definicion-de-xpath\"><strong>Definici\u00f3n de Xpath<\/strong><\/h2>\n<p>Como venimos diciendo, <strong>XML Path Language<\/strong> (<strong>Xpath<\/strong>) es el lenguaje de descripci\u00f3n de rutas para documentos <strong>XML<\/strong>, desarrollado por el W3C. B\u00e1sicamente, permite encontrar elementos dentro de un documento <strong>XML<\/strong> a trav\u00e9s de una sintaxis no basada en XML. Este lenguaje, combinado con otros, nos permite extraer todo el potencial a este tipo de documentos.<\/p>\n<p>Esto es as\u00ed porque <strong>XML<\/strong> integra una serie de lenguajes. <strong>Xpath<\/strong>, por ejemplo, sirve para poder navegar y encontrar distintos elementos, pero existen otros. Cada uno de ellos tiene un objetivo concreto, lo que nos permite combinarlos en funci\u00f3n de nuestras necesidades. Por ejemplo, <strong>xQuery<\/strong> sirve para realizar consultas en documentos XML, mientras que con <strong>XSLT<\/strong> podemos transformar los datos del documento.<\/p>\n<p style=\"text-align: center;\"><em>Lee tambi\u00e9n sobre el <a href=\"https:\/\/tecnologia.euroinnova.com\/fr\/htaccess\/\" target=\"_blank\" rel=\"noopener\">archivo .htaccess<\/a><\/em><\/p>\n<h3 id=\"para-que-sirve-xpath\"><strong>\u00bfPara qu\u00e9 sirve Xpath?<\/strong><\/h3>\n<p>Los programadores pueden navegar por los documentos <strong>XML<\/strong> gracias al lenguaje <strong>Xpath<\/strong>. As\u00ed, definiendo criterios de b\u00fasqueda avanzada y c\u00e1lculos espec\u00edficos pueden encontrar lo que desean. Adem\u00e1s, la sintaxis que deben utilizar es intuitiva y sencilla, a la vez que eficaz. Sin duda, <strong>Xpath<\/strong> es el idioma imprescindible para trabajar con este tipo de documentos.<\/p>\n<p><strong>Xpath<\/strong> contiene una librer\u00eda de 100 funciones est\u00e1ndar para completar distintas operaciones. Se pueden manejar cadenas, hacer operaciones num\u00e9ricas, comparar fechas y muchas m\u00e1s tareas. A lo largo de este post, nos adentraremos en la sintaxis necesaria para que te conviertas en un aut\u00e9ntico especialista.<\/p>\n<h2 id=\"como-funciona-xpath\"><strong>\u00bfC\u00f3mo funciona Xpath?<\/strong><\/h2>\n<p><strong>Xpath<\/strong> entiende e interpreta los datos de un documento <strong>XML<\/strong> como una secuencia de elementos ordenados en una estructura de \u00e1rbol. En este punto, podr\u00edamos decir que es comparable al Modelo de Objetos del Documento (DOM), que se erige como una interfaz entre HTML y JavaScript en el buscador web.<\/p>\n<p>\u00bfPero c\u00f3mo se hacen b\u00fasquedas con el lenguaje <strong>Xpath<\/strong>? Para localizar elementos en un documento XML debemos utilizar <strong>expresiones Xpath<\/strong>. Por ello, ahora nos adentraremos en los elementos m\u00e1s b\u00e1sicos de estas rutas de localizaci\u00f3n: los nodos, los ejes, las pruebas de nodos y los predicas. \u00bfEst\u00e1s preparado? \u00a1Sigue leyendo!<\/p>\n<h2 id=\"tipos-de-nodos\"><strong>Tipos de nodos<\/strong><\/h2>\n<p>Los elementos de una estructura XML reciben el nombre de nodos. Sin embargo, no todos los nodos son iguales, ya que su clasificaci\u00f3n se produce por el orden de aparici\u00f3n en el documento y por el entrelazado de los elementos XML. As\u00ed, podemos distinguir siete tipos de nodos dentro del modelo de datos de <strong>Xpath<\/strong>:<\/p>\n<ul>\n<li>Nodo de elemento (element node).<\/li>\n<li>Nodo de documento (root node o nodo ra\u00edz).<\/li>\n<li>Nodo de atributo (attribute node).<\/li>\n<li>Nodo de texto (text node).<\/li>\n<li>Nodo de espacio de nombres (namespace node).<\/li>\n<li>Nodo de instrucci\u00f3n de procesamiento (processing instruction node).<\/li>\n<li>Nodo de comentario (comment node).<\/li>\n<\/ul>\n<p>Para que lo entiendas mejor desde un prisma m\u00e1s visual, queremos presentarte el siguiente ejemplo:<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\">\n<p>&lt;?xml version=\u00bb1.0&#8243; encoding=\u00bbutf-8&#8243;?&gt;<br \/>&lt;!DOCTYPE Biblioteca SYSTEM \u00abbiblioteca.dtd\u00bb&gt;<br \/>&lt;?xml-stylesheet type=\u00bbtext\/css\u00bb href=\u00bbestilo.css\u00bb?&gt;<br \/>&lt;!&#8211;Este es un comentario de ejemplo&#8211;&gt;<br \/>&lt;biblioteca fecha=\u00bb2025-01-07&#8243;&gt;<br \/>\u00a0 \u00a0 &lt;ubicacion xmlns_sala=\u00bbhttp:\/\/localhost\/XML\/sala\u00bb xmlns_deposito=\u00bbhttp:\/\/localhost\/XML\/deposito\u00bb&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;sala:seccion&gt;Literatura Espa\u00f1ola&lt;\/sala:seccion&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;sala:planta&gt;Segunda&lt;\/sala:planta&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;sala:pasillo&gt;A3&lt;\/sala:pasillo&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;sala:estanteria&gt;7&lt;\/sala:estanteria&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;sala:codigo&gt;LIT-ESP&lt;\/sala:codigo&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;deposito:seccion&gt;Archivo Hist\u00f3rico&lt;\/deposito:seccion&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;deposito:planta&gt;S\u00f3tano&lt;\/deposito:planta&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;deposito:pasillo&gt;B2&lt;\/deposito:pasillo&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;deposito:estanteria&gt;12&lt;\/deposito:estanteria&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;deposito:codigo&gt;ARC-HIS&lt;\/deposito:codigo&gt;<br \/>\u00a0 \u00a0 &lt;\/ubicacion&gt;<br \/>\u00a0 \u00a0 &lt;nota&gt;Material sensible, manipular con guantes&lt;\/nota&gt;<br \/>\u00a0 \u00a0 &lt;documentos&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;libro isbn=\u00bb9788420412146&#8243;&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;titulo&gt;Cien a\u00f1os de soledad&lt;\/titulo&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;ejemplares&gt;3&lt;\/ejemplares&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;precio&gt;24.95&lt;\/precio&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;nota&gt;Edici\u00f3n conmemorativa&lt;\/nota&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/libro&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;libro isbn=\u00bb9788467033281&#8243;&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;titulo&gt;La Regenta&lt;\/titulo&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;ejemplares&gt;2&lt;\/ejemplares&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;precio&gt;19.95&lt;\/precio&gt;<br \/>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/libro&gt;<br \/>\u00a0 \u00a0 &lt;\/documentos&gt;<br \/>&lt;\/biblioteca&gt;<\/p>\n<\/div>\n<p>Aqu\u00ed, puedes ver los siguientes tipos de nodos:<\/p>\n<ul>\n<li><strong>Nodos de documento:<\/strong> es el nodo ra\u00edz que contiene todo el documento XML.<\/li>\n<li><strong>Nodos de elemento:<\/strong> &lt;biblioteca&gt;, &lt;ubicacion&gt;, &lt;libro&gt;, etc.<\/li>\n<li><strong>Nodos de atributo:<\/strong> fecha=\u00bb2025-01-07&#8243; o isbn=\u00bb9788420412146&#8243;.<\/li>\n<li><strong>Nodos de texto:<\/strong> el contenido de cada uno de los elementos como \u00abLiteratura Espa\u00f1ola\u00bb o \u00abCien a\u00f1os de soledad\u00bb.<\/li>\n<li><strong>Nodos de comentario<\/strong> como \u00abeste es un comentario de ejemplo\u00bb.<\/li>\n<li><strong>Nodos de procesamiento:<\/strong> &lt;?xml version=\u00bb1.0&#8243;?&gt; y &lt;?xml-stylesheet?&gt;.<\/li>\n<li><strong>Nodos de espacio de nombres:<\/strong> tanto xmlns:sala como xmlns:deposito.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><em>Lee tambi\u00e9n sobre <a href=\"https:\/\/tecnologia.euroinnova.com\/fr\/como-hacer-web-scraping-con-python\/\" target=\"_blank\" rel=\"noopener\">c\u00f3mo hacer web scraping con Python<\/a><\/em><\/p>\n<h2 id=\"adentrandonos-en-las-rutas-de-localizacion\"><strong>Adentr\u00e1ndonos en las rutas de localizaci\u00f3n<\/strong><\/h2>\n<p>Para buscar entre estos nodos, necesitamos de las rutas de localizaci\u00f3n. Aunque el ejemplo anterior nos da una pista, debemos utilizar <strong>expresiones Xpath<\/strong> para poder navegar a trav\u00e9s del \u00e1rbol y llegar hasta el nodo deseado. \u00bfQu\u00e9 pasa con las rutas de localizaci\u00f3n? Que pueden ser absolutas o relativas.<\/p>\n<p>Seg\u00fan Kay (2008), las rutas absolutas empiezan siempre con una barra diagonal o doble diagonal, representando el nodo ra\u00edz del documento. Un ejemplo podr\u00eda ser el siguiente: \/biblioteca\/documentos\/libro. Este ejemplo selecciona todos los elementos \u00ablibro\u00bb, que son hijos de \u00abdocumentos\u00bb, que a su vez son hijos de \u00abbiblioteca\u00bb desde la ra\u00edz.<\/p>\n<p>Por otro lado, las rutas relativas no comienzan con una barra diagonal y se eval\u00faan en relaci\u00f3n al nodo contextual actual. Un ejemplo ser\u00eda \u00ablibro\/titulo\u00bb, en el que se selecciona todos los elementos \u00abt\u00edtulo\u00bb que son hijos de \u00ablibro\u00bb desde el nodo actual.<\/p>\n<p>Para terminar, queremos rese\u00f1arte las tres partes que conforman la expresi\u00f3n de ruta: eje, prueba de nodo y un n\u00famero cualquiera de predicados.<\/p>\n<ul>\n<li><strong>Eje:<\/strong> la parte que fija la direcci\u00f3n de la navegaci\u00f3n.<\/li>\n<li><strong>Prueba de nodo:<\/strong> filtro con el que se delimita a un conjunto de nodos.<\/li>\n<li><strong>Predicados:<\/strong> a\u00f1aden m\u00e1s filtros a los nodos seleccionados.<\/li>\n<\/ul>\n<h2 id=\"aprende-la-sintaxis-mas-relevante-de-xpath\">Aprende la sintaxis m\u00e1s relevante de <strong>Xpath<\/strong><\/h2>\n<h3 id=\"operadores-basicos\"><strong>Operadores b\u00e1sicos<\/strong><\/h3>\n<ul>\n<li><code>\/<\/code> &#8211; Selecciona desde la ra\u00edz<\/li>\n<li><code>\/\/<\/code> &#8211; Selecciona nodos en cualquier ubicaci\u00f3n<\/li>\n<li><code>.<\/code> &#8211; Selecciona el nodo actual<\/li>\n<li><code>..<\/code> &#8211; Selecciona el nodo padre<\/li>\n<li><code>@<\/code> &#8211; Selecciona atributos<\/li>\n<\/ul>\n<h3 id=\"predicados-y-funciones\"><strong>Predicados y funciones<\/strong><\/h3>\n<ul>\n<li><code>[]<\/code> &#8211; Predicados para filtrar nodos<\/li>\n<li><code>last()<\/code> &#8211; Selecciona el \u00faltimo elemento<\/li>\n<li><code>position()<\/code> &#8211; Obtiene la posici\u00f3n actual<\/li>\n<li><code>count()<\/code> &#8211; Cuenta elementos<\/li>\n<li><code>sum()<\/code> &#8211; Suma valores<\/li>\n<\/ul>\n<h3 id=\"operadores-de-comparacion\"><strong>Operadores de comparaci\u00f3n<\/strong><\/h3>\n<ul>\n<li><code>=<\/code> &#8211; Igual a<\/li>\n<li><code>!=<\/code> &#8211; Diferente de<\/li>\n<li><code>&amp;gt;<\/code> &#8211; Mayor que<\/li>\n<li><code>&amp;lt;<\/code> &#8211; Menor que<\/li>\n<li><code>&amp;gt;=<\/code> &#8211; Mayor o igual que<\/li>\n<li><code>&amp;lt;=<\/code> &#8211; Menor o igual que<\/li>\n<\/ul>\n<h3 id=\"wildcards\"><strong>Wildcards<\/strong><\/h3>\n<ul>\n<li><code>*<\/code> &#8211; Coincide con cualquier elemento<\/li>\n<li><code>@*<\/code> &#8211; Coincide con cualquier atributo<\/li>\n<li><code>node()<\/code> &#8211; Coincide con cualquier nodo<\/li>\n<\/ul>\n<h3 id=\"operadores-logicos\"><strong>Operadores l\u00f3gicos<\/strong><\/h3>\n<ul>\n<li><code>and<\/code> &#8211; Y l\u00f3gico<\/li>\n<li><code>or<\/code> &#8211; O l\u00f3gico<\/li>\n<li><code>not()<\/code> &#8211; Negaci\u00f3n<\/li>\n<\/ul>\n<h2 id=\"referencias-bibliograficas\"><strong>Referencias bibliogr\u00e1ficas<\/strong><\/h2>\n<ul>\n<li>World Wide Web Consortium. (1998). Extensible Markup Language (XML) 1.0. W3C Recommendation. <a href=\"https:\/\/www.w3.org\/TR\/1998\/REC-xml-19980210\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/www.w3.org\/TR\/1998\/REC-xml-19980210<\/a><\/li>\n<li>World Wide Web Consortium. (2008). Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C Recommendation. <a href=\"https:\/\/www.w3.org\/TR\/xml\/\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/www.w3.org\/TR\/xml\/<\/a><\/li>\n<li>Kay, M. (2008). XSLT 2.0 and Xpath 2.0 Programmer&#8217;s Reference (4th ed.). Wrox Press.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Xpath consiste en un lenguaje de consulta, usado para buscar y seleccionar elementos de un documento XML. \u00bfY qu\u00e9 es [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":961,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categorizar"],"acf":[],"_links":{"self":[{"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/posts\/3304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/comments?post=3304"}],"version-history":[{"count":0,"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/posts\/3304\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/media\/961"}],"wp:attachment":[{"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/media?parent=3304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/categories?post=3304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/fr\/wp-json\/wp\/v2\/tags?post=3304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}