Introducció a XPath

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Quin és el propòsit principal del llenguatge XPath?

  • Validar la correcció d'un document XML.
  • Transformar documents XML en altres formats.
  • Accedir a informació específica dins d'un document XML. (correct)
  • Definir l'estructura d'un document XML.

En quins tipus de tecnologies o llenguatges s'utilitza habitualment XPath?

  • Com a llenguatge de programació independent per al desenvolupament d'aplicacions.
  • Únicament en navegadors web.
  • En bases de dades relacionals.
  • En consultes XQuery i transformacions XSLT. (correct)

Quina expressió XPath s'utilitza per seleccionar tots els nodes 'autor' independentment del seu nivell jeràrquic?

  • bib/autor
  • //autor (correct)
  • /autor
  • /bib/autor

Què retorna la funció text() en XPath?

<p>El contingut textual del node. (D)</p> Signup and view all the answers

Quin operador XPath s'utilitza per seleccionar nodes que compleixen múltiples condicions?

<p>and (D)</p> Signup and view all the answers

Quina funció XPath serveix per determinar si una cadena comença amb un prefix específic?

<p>starts-with() (D)</p> Signup and view all the answers

Quina funció XPath utilitzaries per obtenir l'últim element d'un conjunt de nodes?

<p>last() (A)</p> Signup and view all the answers

Com s'expressa en XPath la selecció de tots els llibres anteriors a l'any 2003, assumint que l'element 'any' conté l'any de publicació?

<p>/bib/book[year &lt; 2003] (D)</p> Signup and view all the answers

En una consulta XPath anidada, quin seria el primer pas per mostrar tots els títols de llibres de l'autor de 'TCP/IP Illustrated'?

<p>Trobar l'autor del llibre 'TCP/IP Illustrated'. (B)</p> Signup and view all the answers

Quina diferència principal hi ha entre la sintaxi abreviada i la sintaxi complexa en XPath?

<p>La sintaxi complexa utilitza eixos per definir les relacions entre nodes, mentre que l'abreviada és més directa. (C)</p> Signup and view all the answers

Quin eix XPath s'utilitza per seleccionar els nodes que són fills directes del node de context?

<p>child:: (A)</p> Signup and view all the answers

Si vols seleccionar tots els germans menors d'un node 'autor' en XPath utilitzant la sintaxi complexa, quin eix has d'utilitzar?

<p>following-sibling:: (A)</p> Signup and view all the answers

Quina de les següents funcions permet normalitzar els espais en blanc en una cadena de text?

<p>normalize-space() (C)</p> Signup and view all the answers

Com seleccionaries tots els atributs de tots els nodes en un document XML usant XPath?

<p>//@* (B)</p> Signup and view all the answers

Quin eix en XPath retorna els nodes que apareixen abans del node de context en el document, excloent els ascendents, atributs i espais de noms?

<p>preceding:: (B)</p> Signup and view all the answers

Considerant el document XML proporcionat, quina consulta XPath seleccionaria tots els títols dels llibres publicats per 'Addison-Wesley'?

<p>/bib/book[publisher='Addison-Wesley']/title (D)</p> Signup and view all the answers

Si volguéssim seleccionar el penúltim llibre dins de l'element bib, com ho faríem usant XPath?

<p>/bib/book[position()=last()-1] (D)</p> Signup and view all the answers

Suposem que tens un document XML on dins de cada llibre hi ha múltiples nodes keyword. Com comptaries el nombre total de keyword presents en tots els llibres?

<p>count(//keyword) (A)</p> Signup and view all the answers

Tenint en compte que XPath no té funcions natives per a operacions complexes de string manipulation directament, si necessites revertir una cadena (p. ex., 'abc' a 'cba'), com ho faries sense utilitzar extensions externes des de XPath 1.0?

<p>Utilitzaries una combinació de <code>substring()</code> i <code>string-length()</code> en una funció recursiva definida externament i cridada des de XPath a través d'una funció d'extensió. (B)</p> Signup and view all the answers

En XPath 1.0, si necessites determinar si existeix algun node book que contingui un node author amb un nom que comenci amb la lletra 'S', però sense utilitzar funcions d'extensió, i optimitzant per a la major eficiència possible (menys passos), com ho expressaries?

<p>//book[string-length(author) &gt; 0 and substring(author, 1, 1) = 'S'] (A)</p> Signup and view all the answers

Quina expressió XPath seleccionaria el node que conté el nom del instituto?

<p>/ies/nombre (A)</p> Signup and view all the answers

Si vols extreure només el text de la pàgina web del instituto, sense les etiquetes XML, quina expressió XPath utilitzaries?

<p>/ies/web/text() (A)</p> Signup and view all the answers

Quina expressió XPath retornaria una llista amb els noms de tots els ciclos formativos?

<p>/ies/ciclos/ciclo/nombre/text() (D)</p> Signup and view all the answers

Per obtenir les sigles identificatives de cada ciclo formativo (l'atribut id), quina expressió XPath és la correcta?

<p>/ies/ciclos/ciclo/@id (A)</p> Signup and view all the answers

Com obtindries els anys de publicació dels decretos de títols dels ciclos formativos?

<p>/ies/ciclos/ciclo/decretoTitulo/@año (D)</p> Signup and view all the answers

Quina expressió XPath selecciona tota la informació dels ciclos formativos de grado medio?

<p>/ies/ciclos/ciclo[grado='Medio'] (B)</p> Signup and view all the answers

Per obtenir els noms dels ciclos formativos que són de grado superior, quina expressió XPath és l'adequada?

<p>/ies/ciclos/ciclo[grado='Superior']/nombre (B)</p> Signup and view all the answers

Com seleccionaries els noms dels ciclos formativos els decretos dels quals van ser publicats abans de l'any 2010?

<p>/ies/ciclos/ciclo[decretoTitulo/@año &lt; 2010]/nombre/text() (A)</p> Signup and view all the answers

Quina de les següents consultes XPath retorna el primer element ciclo dins de l'element ciclos?

<p>/ies/ciclos/ciclo[1] (B)</p> Signup and view all the answers

Si necessites seleccionar tots els nodes nombre que són descendents de l'element ies, independentment de la seva ubicació en l'estructura XML, quina expressió utilitzaries?

<p>/ies/descendant::nombre (C)</p> Signup and view all the answers

Com podries seleccionar tots els elements ciclo que tenen un atribut grado amb un valor que contingui la cadena 'io' (sense tenir en compte majúscules o minúscules)? Assumeix que uses XPath 2.0 o superior.

<p>/ies/ciclos/ciclo[matches(@grado, 'io', 'i')] (A)</p> Signup and view all the answers

Si volguessis trobar tots els elements ciclo que tinguin tant un atribut grado amb valor 'Superior' com un element fill nombre que contingui la paraula 'Web', com expressaries això en XPath?

<p>/ies/ciclos/ciclo[@grado='Superior' and contains(nombre/text(), 'Web')] (B)</p> Signup and view all the answers

Com seleccionaries tots els nodes ciclo que NO tenen un atribut id definit?

<p>/ies/ciclos/ciclo[not(@id)] (C)</p> Signup and view all the answers

Si necessites obtenir el darrer element ciclo dins de l'element ciclos, quina de les següents expressions XPath és la correcta?

<p>both A and B (B)</p> Signup and view all the answers

Si volguessis seleccionar el primer element nombre que sigui fill d'un element ciclo i que contingui exactament la cadena 'Administració de Sistemes Informàtics en Xarxa', com ho faries?

<p>(/ies/ciclos/ciclo/nombre[text()='Administració de Sistemes Informàtics en Xarxa'])[1] (C)</p> Signup and view all the answers

Si necessites seleccionar tots els elements ciclo que tenen un element fill decretoTitulo amb un atribut año que sigui igual a l'any actual, com ho faries usant XPath 1.0 (sense funcions externes)? Assumeix que l'any actual és emmagatzemat a la variable $currentYear.

<p>/ies/ciclos/ciclo[decretoTitulo/@año = $currentYear] (D)</p> Signup and view all the answers

Suposem que vols obtenir tots els valors (sense repeticions) dels atributs grado presents en els nodes ciclo. Com ho faries amb XPath 1.0 sense utilitzar funcions d'extenció ni assumir cap ordre específic en els resultats?

<p>XPath 1.0 no pot retornar valors únics d'atributs directament sense extensions. (D)</p> Signup and view all the answers

Si necessites comptar el nombre total de nodes nombre que són fills dels nodes ciclo dins del document XML, quina expressió XPath utilitzaries?

<p>count(/ies/ciclos/ciclo/nombre) (D)</p> Signup and view all the answers

Suposem que vols concatenar els noms de tots els ciclos formatius que siguin de grau 'Superior', separats per una coma. Com ho faries amb XPath? (Assumeix XPath 2.0 o superior).

<p>string-join(/ies/ciclos/ciclo[@grado='Superior']/nombre/text(), ',') (B)</p> Signup and view all the answers

Tens un document XML massiu i necessites avaluar si almenys un dels nodes ciclo compleix simultàniament les següents condicions: Que el seu atribut grado contingui la lletra 'S' (sense importar majúscules o minúscules) i que el seu fill nombre contingui la paraula 'Aplicacions'. Sense utilitzar funcions d'extensió i optimitzant al màxim l'eficiència de la consulta (menys passos), com ho expressaries?

<p>exists(/ies/ciclos/ciclo[matches(@grado, 's', 'i') and contains(nombre, 'Aplicacions')]) (D)</p> Signup and view all the answers

Flashcards

Què és XPath?

Llenguatge XML per accedir a informació específica en un document XML mitjançant el recorregut d'elements.

Direccionament XPath

Cami de nodes que permet seleccionar un conjunt d'elements en un document XML.

nodo en XPath

Selecciona elements amb un nom específic.

⁄nodo en XPath

Selecciona el nodo que es troba directament a l'arrel del document.

Signup and view all the flashcards

nodo1/nodo2 en XPath

Selecciona nodo2 que és fill directe de nodo1.

Signup and view all the flashcards

nodo1//nodo2 en XPath

Selecciona nodo2 que és descendent de nodo1, possiblement amb nodes intermedis.

Signup and view all the flashcards

//nodo en XPath

Selecciona nodo situat en qualsevol nivell sota l'arrel.

Signup and view all the flashcards

@atributo en XPath

Selecciona l'atribut amb el nom attribute.

Signup and view all the flashcards

* en XPath

Selecciona qualsevol element.

Signup and view all the flashcards

text() en XPath

Retorna el text contingut dins d'un node.

Signup and view all the flashcards

Filtres amb [ ] en XPath

Filtra nodes basant-se en condicions específiques.

Signup and view all the flashcards

text() en XPath

Retorna el text contingut dins d'un node.

Signup and view all the flashcards

| (unió) en XPath

Uneix dos conjunts de nodes.

Signup and view all the flashcards

position() = n en XPath

Retorna el node en la posició 'n'.

Signup and view all the flashcards

last() en XPath

Retorna l'últim node d'un conjunt.

Signup and view all the flashcards

exists() en XPath

Comprova si un node existeix.

Signup and view all the flashcards

name() en XPath

Retorna el nom del node actual.

Signup and view all the flashcards

Consultes XPath anidades

Consulta XPath dins d'una altra per filtrar resultats.

Signup and view all the flashcards

Sintaxi abreviada XPath

Més senzilla i fàcil de llegir.

Signup and view all the flashcards

Eixos en XPath

Accedeix a parts de l'arbre XML basant-se en relacions entre nodes.

Signup and view all the flashcards

/ies/nombre

Retorna el nom de l'institut.

Signup and view all the flashcards

/ies/web/text()

Mostra la pàgina web de l'institut sense les etiquetes XML.

Signup and view all the flashcards

/ies/ciclos/ciclo/nombre/text()

Retorna el nom de tots els cicles formatius sense etiquetes.

Signup and view all the flashcards

/ies/ciclos/ciclo/@id

Mostra les abreviacions (ID) dels cicles.

Signup and view all the flashcards

/ies/ciclos/ciclo/decretoTitulo/@año

Retorna els anys de publicació dels decrets dels títols.

Signup and view all the flashcards

/ies/ciclos/ciclo[grado="Medio"]

Mostra tota la informació dels cicles formatius de grau mitjà.

Signup and view all the flashcards

/ies/ciclos/ciclo[grado="Superior"]/nombre

Retorna els noms dels cicles de grau superior.

Signup and view all the flashcards

/ies/ciclos/ciclo[decretoTitulo/@año < 2010]/nombre/text()

Mostra els noms dels cicles formatius anteriors a 2010 sense etiquetes.

Signup and view all the flashcards

Mostrar noms dels balls

Retorna els noms de tots els balls.

Signup and view all the flashcards

Nom i places dels balls

Mostra el nom del ball i el nombre de places entre parèntesis.

Signup and view all the flashcards

Balls amb preu > 30

Llista els noms dels balls amb un preu superior a 30.

Signup and view all the flashcards

Balls cars en euros

Llista els noms dels balls amb preu superior a 30 i afegeix la moneda 'euro'.

Signup and view all the flashcards

Balls d'inici al gener

Mostra nom i data d'inici dels balls que comencen al gener.

Signup and view all the flashcards

Professors i sales

Mostra els noms dels professors i la sala on donen classe, ordenats per sala.

Signup and view all the flashcards

Professors únics i sales

Mostra noms de professors sense repetir i totes les seves sales, ordenats per nom.

Signup and view all the flashcards

Mitjana preus balls

Calcula la mitjana dels preus de tots els balls.

Signup and view all the flashcards

Suma preus sala 1

Calcula la suma dels preus dels balls a la sala 1.

Signup and view all the flashcards

Places Jesús Lozano

Calcula el total de places ofertes per Jesús Lozano.

Signup and view all the flashcards

Ingressos Laura Mendiola

Calcula els ingressos de Laura Mendiola si s'omplen les places.

Signup and view all the flashcards

Ingressos per ball de Jesús Lozano

Calcula els ingressos per cada ball de Jesús Lozano si s'omplen les places.

Signup and view all the flashcards

Ingressos de 'Laura'

Calcula els ingressos de la professora 'Laura' si s'omplen les places.

Signup and view all the flashcards

Preus i descompte

Mostra nom, preu i preu amb descompte del 15%, ordenat per nom.

Signup and view all the flashcards

Dades sense dates

Mostra totes les dades de cada ball excepte les dates.

Signup and view all the flashcards

Taula HTML balls i profes

Genera una taula HTML amb noms de balls i professors.

Signup and view all the flashcards

Study Notes

Introducció a XPath

  • XPath és un llenguatge XML per accedir a informació específica en un document XML, recorrent els seus elements.
  • L'avaluació d'una expressió XPath implica buscar elements que compleixin el recorregut especificat.
  • S'utilitza en consultes XQuery, transformacions XSLT o XSL-FO, rarament de forma aïllada.
  • És una recomanació del W3C, amb versions com XPath 3.0, 2.0 i 1.0.
  • Un document XML està format per nodes (elements) amb etiquetes i contingut (text i altres nodes), organitzats en arbre amb un únic node arrel.

Eines per gestionar XPath

Direccionament o localització

  • El direccionament o localització és una ruta per seleccionar un conjunt de nodes en un document XML.
  • El direccionament pot ser absolut (incloent el node arrel) o relatiu (començant des d'un node diferent).

Expressions d'adreçament XPath

  • node: Element amb el nom "node".
  • /node: El node es troba a l'arrel del document.
  • nodo1/nodo2: nodo2 és fill directe de nodo1.
  • nodo1//nodo2: nodo2 és descendent de nodo1, amb possibles nodes intermedis.
  • //nodo: El node es troba a qualsevol nivell sota l'arrel.
  • @atributo: Atribut amb el nom "atributo".
  • *: Qualsevol element.
  • @*: Qualsevol atribut.
  • . : Node actual
  • .. : Node pare

Exemples d'ús

  • /bib/book/author: Llista els títols dels llibres de la biblioteca.
  • //author: Llista els autors sense indicar la seva relació jeràrquica.
  • /bib/book/@id: Llista els identificadors dels llibres.
  • //@*: Llista tots els atributs de qualsevol node.
  • text(): Retorna el text del node. Per exemple, /bib/book/author/text() llista els títols dels llibres sense etiquetes.

Filtrar l'accés a elements

  • Permet refinar la selecció de nodes mitjançant condicions expressades entre claudàtors [].
  • Operadors disponibles: and, or, not, =, !=, <, >, <=, >=, to (rang), +, -, *, div (divisió), mod (residu), | (unió).

Funcions XPath

  • Funcions numèriques: round(), abs(), floor(), ceiling().
  • Funcions de cadena: substring(), starts-with(), ends-with(), contains(), normalize-space(), translate(), string-length(), upper-case(), lower-case().
  • Funcions de posició d'elements: position(), last().
  • Funcions de nodes: name(), text(), root(), node(), comment(), processing-instruction(), exists(), empty().
  • Funcions d'agregació: count(), avg(), max(), min(), sum().

Exemples de filtres

  • /bib/book/author | /bib/book/publisher: Mostra autors i publicadors.
  • /bib/(book|dictionary)/author: Mostra autors de llibres o diccionaris.
  • /bib/book[position()=2]: Mostra el segon llibre.
  • /bib/book[position()=2 to 3]: Mostra del segon al tercer llibre.
  • /bib/book[last()]: Mostra l'últim llibre.
  • /bib/book[year<2003]/title: Mostra títols de llibres anteriors a l'any 2003.

Consultes XPath anidades

  • Implica incloure una consulta XPath dins la condició d'una altra.
  • Exemple: trobar els títols dels llibres de l'autor de "TCP/IP Illustrated" requereix una consulta per determinar qui és l'autor.
    • /bib/book[title="TCP/IP Illustrated"]/author/text(): Troba l'autor del llibre.
    • /bib/book[author=/bib/book[title="TCP/IP Illustrated"]/author/text()]/title: Troba els títols dels llibres d'aquest autor.

Sintaxi abreujada i complexa

  • Sintaxi abreujada: més senzilla i fàcil de llegir.
  • Sintaxi complexa: utilitza eixos per nomenar els elements.

Eixos

  • Són expressions per accedir a parts de l'arbre XML segons les relacions entre nodes.
    • self::: Retorna el node de context.
    • child::: Retorna els fills del node de context.
    • parent::: Retorna el pare del node de context.
    • ancestor::: Retorna els avantpassats del node de context.
    • ancestor-or-self::: Retorna els avantpassats i el node de context.
    • descendant::: Retorna els descendents del node de context.
    • descendant-or-self::: Retorna els descendents i el node de context. Equivalent a //.
    • following::: Retorna els nodes que apareixen després del node de context (exceptuant descendents, atributs i espais de noms).
    • preceding::: Retorna els nodes que apareixen abans del node de context (exceptuant ascendents, atributs i espais de noms).
    • following-sibling::: Retorna els germans menors del node de context.
    • preceding-sibling::: Retorna els germans majors del node de context.
    • attribute::: Atributs del node de context.
    • namespace::: Espai de noms del node de context.

Exemples de sintaxi complexa

  • /child::bib/child::book/child::title (equivalent a /bib/book/title): Llista els títols dels llibres.
  • /bib/book/author/following-sibling::*: Llista els germans menors del segon autor.
  • /bib/descendant::year (equivalent a /bib//year): Llista els descendents amb el nom "year".

Consultes XPath Simples - Exemple Pràctic

  • Donat un document XML d'un institut (IES TicArte):
    • L'expressió /ies/nombre mostra el nom de l'institut.
    • L'expressió /ies/web/text() mostra la pàgina web de l'institut sense etiquetes.
    • L'expressió /ies/ciclos/ciclo/nombre/text() mostra el nom dels cicles formatius sense etiquetes.
    • L'expressió /ies/ciclos/ciclo/@id mostra les sigles dels cicles formatius.
    • L'expressió /ies/ciclos/ciclo/decretoTitulo/@año mostra els anys de publicació dels decrets dels cicles formatius.
    • L'expressió /ies/ciclos/ciclo[grado="Medio"] mostra tota la informació dels cicles formatius de grau mitjà.
    • L'expressió /ies/ciclos/ciclo[grado="Superior"]/nombre mostra el nom dels cicles formatius de grau superior.
    • L'expressió /ies/ciclos/ciclo[decretoTitulo/@año<2010]/nombre/text() mostra el nom dels cicles formatius publicats abans del 2010 sense etiquetes.

Consultes XQuery - Exemple Pràctic

  • Document XML exemple conté informació sobre classes de balls (nom, preu, places, dates, professor, sala).

A continuació es presenten exemples de consultes XQuery sobre aquest document:

  • losbailes: Retorna una llista amb el nom de cada ball.
  • losbailes: Retorna una llista amb el nom del ball seguit del número de places entre paréntesis.
  • Retorna el nom dels balls amb un preu superior a 30 euros.
  • Retorna el nom dels balls amb un preu superior a 30 euros, mostrant la moneda "euro".
  • Retorna el nom i la data d'inici dels balls que comencen al gener (data que contingui "/1/").
  • Retorna el nom dels professors i la sala on fan classe; ordenats per sala.
  • Retorna el nom de cada professor (sense repeticions) amb totes les sales on fa classe i ordenats per nom.
  • Retorna la mitjana dels preus de tots els balls.
  • Retorna la suma dels preus dels balls que tenen lloc a la sala 1.
  • Calcula les places totals que oferta el professor "Jesus Lozano".
  • Calcula els guanys de la professora "Laura Mendiola" si omplís totes les places de la seva classe (sabent que només en té una).
  • Calcula els guanys del professor "Jesus Lozano" per cada ball si omplís tots els llocs.
  • Calcula els guanys de la professora "Laura" (sense saber el cognom) si s'omplissin totes les places del seu ball.
  • Mostra nom del ball, preu i preu amb descompte del 15% per a families nombroses, ordenats per nom del ball.
  • Mostra totes les dades de cada ball, excepte les dates d'inici i fi.
  • Mostra el nom dels balls i el professor en una taula HTML.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

XPath Grundlagen
18 questions

XPath Grundlagen

SophisticatedMulberryTree avatar
SophisticatedMulberryTree
XML Querying and XPath Basics
34 questions

XML Querying and XPath Basics

EffusiveWilliamsite1674 avatar
EffusiveWilliamsite1674
Use Quizgecko on...
Browser
Browser