100% encontró este documento útil (1 voto)
192 vistas48 páginas

HTML: Etiquetas

El documento introduce HTML5 y XML. HTML5 es un lenguaje de marcado creado por el W3C para definir la estructura semántica de páginas web. XML permite definir lenguajes personalizados y resuelve problemas de HTML como la separación de contenido y presentación. XML define vocabularios mediante DTD o esquemas para describir documentos de manera estructurada.

Cargado por

Bryan Tr
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
192 vistas48 páginas

HTML: Etiquetas

El documento introduce HTML5 y XML. HTML5 es un lenguaje de marcado creado por el W3C para definir la estructura semántica de páginas web. XML permite definir lenguajes personalizados y resuelve problemas de HTML como la separación de contenido y presentación. XML define vocabularios mediante DTD o esquemas para describir documentos de manera estructurada.

Cargado por

Bryan Tr
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introducción HTML5

HTML (Hypertext Markup Language) es un lenguaje de marcado.


Sirve para definir la estructura y la semántica de nuestra página web.
Fue creado y es mantenido por W3C (World Wide Web Consortium)

HTML: etiquetas

Las etiquetas sólo pueden ser de dos tipos:


[Link] que tienen una apertura y un cierre
Ejemplo:
<elemento atributo="valor">Contenido</elemento>
<a href="[Link]
Tenemos un elemento a donde el valor del atributo href es [Link] y
qué su contenido es Google

Las etiquetas están siempre contenidas entre <> y el cierre sólo incluye el nombre del
elemento precedido de la barra “/”. Ejemplo </elemento>
las etiquetas siempre están contenidas entre los símbolos < >
2. Elementos autocontenidos (no se cierran explícitamente)
<elemento atributo="valor">
<img src="[Link]" alt="Logotipos de HTML5, CSS3 y
JavaScript">

Ejemplos de etiquetas

Ejemplos de etiquetas en HTML5


elemento: html, head, meta, title, body, img…
atributo: charset, src, alt, …
valor: UTF-8, "url" (la URL a un recurso), "texto", …

Anidación de etiquetas

<head>
<title>Título de la página</title>
<meta name="author" content="Raúl Jiménez Ortega -
@hhkaos">
</head>
La etiqueta head es el padre de la etiqueta title y meta.
La etiqueta title y meta son hijas de la etiqueta head.

Orden de apertura y cierre

Cuando se anidan etiquetas, la primera etiqueta en cerrarse tiene que ser la última que
se abrió.

<p>El orden es <strong>muy importante</p></strong>


La forma correcta de hacerlo sería:
<p>El orden es <strong>muy importante</strong></p>
Otros aspectos

No todas las etiquetas son anidables entre sí; por ejemplo: una etiqueta body no puede
contener una etiqueta head.

Es muy importante añadir la sangría en el código para distinguir entre las etiquetas.

No existe un límite máximo de anidamiento.

Estructura básica de una página

Estructura inicial
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Título de la página</title>
</head>
<body></body>
</html>

Estructura básica de una página

<!DOCTYPE html>: indicar al navegador que el código HTML en el que está


escrita la página es en la versión 5, osea que es HTML5.

<html lang="es">... </html>: indica la raíz del documento y todas las etiquetas
deben estar incluidas dentro. Además, especifica del idioma.
<head> ... </head>:se usa para envolver otras etiquetas que ofrecen información
principalmente a: al navegador, a los buscadores y a otras páginas (como pueden ser
redes sociales, etc).
La información especificada dentro del head no se muestra dentro de la página web que
ve el usuario.

<head> ... </head>:se usa para envolver otras etiquetas que ofrecen información
principalmente a: al navegador, a los buscadores y a otras páginas (como pueden ser
redes sociales, etc).
La información especificada dentro del head no se muestra dentro de la página web que
ve el usuario.
<meta charset="UTF-8">: le indica al navegador qué tipo de caracteres contiene la
página.

<title> ... </title>: indica el título de nuestra página. Este se muestra en la pestaña
del navegador.

<body> ... </body>: contiene todo el contenido visible por el usuario.


Etiquetas básicas

<p></p> : representa un párrafo.


<br> : representa un salto de línea.
<ul></ul> : representa una lista, en donde el orden de los elementos no es
importante.
<ol></ol> : representa una lista de elementos, donde el orden de los elementos es
importante.
<li></li> : representa un elemento de la lista y su padre siempre tiene que ser una
etiqueta ol o ul.

<strong></strong> : representa algo muy importante , serio (para avisos o


precauciones) o urgente (qué debe ser leído antes).

<em></em> : sirve para enfatizar contenido.

<!-- --> : se utiliza para añadir comentarios dentro del código qué el usuario no
podrá ver.

Resumen

h1 = heading1; h2 = heading 2; ...


p = paragraph
br = break line
ul = unordered list
ol = ordered list
li = list item
em = emphasis
XML (Extensible Markup Language)

XML es un lenguaje que permite definir lenguajes de marca adecuados a un tipo específico de
contenido.

XML resuelve los siguientes problemas de HTML

Problemas de HTML

 Distinta apariencia según versión o tipo de navegador.


 En ocasiones se usa como lenguaje de formato (presentación) en vez de lenguaje para
definir contenidos, se indica cómo se representa la información, no lo que realmente
es.
 Sólo se le da un uso: páginas web.
 Resulta insuficiente a la hora de definir contenidos

HTML / XML

La segunda versión del documento tiene más significado, es más interpretable al haber usado
un lenguaje cercano al tipo de contenido.

Ventajas de XML

 Fácilmente procesable por máquinas y humanos.


 Separa la información (contenido) de su presentación (formato).
 Definiendo distintas presentaciones, un mismo documento puede
 visualizarse de distintas formas.
 Formato ideal para transacciones B2B (business-to-business).
 Permite técnicas de extracción de información y minería de datos.
 Las estrictas reglas para la composición de un documento XML permite su fácil análisis
sintáctico
 Los lenguajes específicos basados en XML son llamados vocabularios. Se definen
mediante un DTD (Document Type Definition) o un Schema,
 describiendose en éstos los elementos, atributos, modelos de contenido y entidades
que componen el vocabulario XML
XML para circuito

El vocabulario se ha llamado electrónica, y está compuesto por los elementos


{circuito, descripción, generador, resistencia, condensador, inductancia}. Haciendo uso de
este vocabulario, se crea el documento propuesto

Declaración y XML-prólogo

XML-elementos

Los elementos XML pueden tener contenido (más elementos, caracteres o ambos a la vez) o
bien ser elementos vacíos. Siempre empieza con <etiqueta> (puede contener atributos) y
termina con </etiqueta>.

XML-atributos

 Los elementos pueden tener atributos. Es una manera de incorporar propiedades a los
elementos de un documento.
 Los atributos están delimitados con comillas dobles (“) o comillas simples (').
 Un elemento con contenido puede modelarse como un elemento vacío con atributos.
Secciones CDATA

Permiten especificar datos utilizando cualquier carácter.


Tienen la característica de no ser interpretados como marca XML.
Empiezan por "<![CDATA[" y terminan con la cadena "]]>". Las secciones no se pueden anidar

XML-documentos bien formados

 Los elementos existentes en un documento XML deben seguir una estructura


estrictamente jerárquica, cumpliendo una serie de reglas:
 Sólo puede existir un elemento raíz.
 Los elementos deben estar correctamente anidados.
 Los elementos no pueden solaparse entre ellos.
 Deben estar correctamente cerrados.
 Los valores de los atributos deben ir entre comillas. Se puede usar comilla simple (‘) si
el valor contiene comillas dobles (“).

XML trata a las mayúsculas y las minúsculas como caracteres diferentes

Ejemplos
DTD (Definición de tipo de documento)

La definición de tipo de documento o DTD se usa para construir un lenguaje XML.


Contiene un conjunto de reglas sintácticas que definen los elementos, atributos y cómo se
relacionan.
Presentan un problema: este documento no está formado por elementos pertenecientes a un
vocabulario XML, no siguen una sintaxis propia de XML. Por ello se plantea una propuesta
alternativa a ellos, los denominados Schemas.

DTD

Los DTD pueden residir en un fichero externo, o estar contenidos en el propio documento
XML.
No es obligatorio que un documento XML lleve asociado un DTD.
Todo documento XML que se ajusta a su DTD se denomina documento válido.

Sin DTD

Aquellos documentos que no tienen DTD no son válidos, esto no quiere decir que no sea
correcto o bien formado.

Con DTD
DTD

Espacios de nombres

 Los espacios de nombres se definen cuando se usan elementos que pertenecen a


distintos vocabularios en un mismo documento XML.
 La aplicación que procesa el documento debe soportarlos.
 Un escenario donde se usan es en las transformaciones XSLT.

Espacio de nombres

● Para definir un espacio de nombres hay


● que añadir el prefijo "xmlns".

No existe conflicto cuando un documento usa un nombre de elemento que existe en los XSD o
DTD referenciados. Un nombre de elemento puede tener varias definiciones, para ello se
pueden definir varios prefijos

En el siguiente ejemplo, el elemento <a> pertenece a dos vocabularios distintos:


DTD y XML SCHEMA

DTD

DTD - Document Type Definition.


 Define la gramática a seguir en el documento
 XML para que éste sea considerado como válido.
 Puede incluirse en un fichero externo al XML, y/o
 incluirse dentro del propio fichero XML.

DTD. Declaración de tipo (i)

DTD. Declaración de tipo (ii)

DTD. Elemento raíz

 Toda DTD debe tener uno y sólo un elemento raíz (también conocido como elemento
documento).
 Este elemento raíz debe coincidir con el nombre que aparece a continuación del
DOCTYPE.
DTD. Contenido

Un documento DTD puede contener:


• Declaraciones de elementos.
• Declaraciones de atributos para un elemento.
• Declaraciones de entidades.
• Declaraciones de notaciones.
• Instrucciones de procesamiento.
• Comentarios.
• Referencias a entidades de parámetro.

DTD. Elementos (i)

A partir del elemento raíz, pueden opcionalmente colgar (de forma jerárquica) otros
elementos.

DTD. Elementos (ii)

Contenido de un elemento:
• EMPTY: El elemento está vacío (puede contener atributos). Ej.: <!ELEMENT IMAGEN EMPTY>
• ANY: El elemento puede almacenar cualquier tipo de contenido. Ej.: <!ELEMENT IMAGEN
ANY>
• Otros elementos: Un elemento puede contener uno o más elementos hijos en una cierta
secuencia. Ej.: <!ELEMENT LIBRO (TITULO, AUTOR)>
• #PCDATA: Texto a procesar por el parser. Ej.: <!ELEMENT LIBRO (#PCDATA)>
• Mixto: el elemento puede incluir secuencias de caracteres opcionalmente mezcladas con
elementos hijos. <!ELEMENT LIBRO (#PCDATA | AUTOR)*>

DTD. Elementos (iii)

Secuencias de hijos de un elemento:


• Secuencia:
– Secuencia en orden: hijos separados por comas.
– Opciones: hijos separados por | (barra)
– Conjuntos de elementos pueden agruparse entre paréntesis.
• Cardinalidad: un elemento, o un conjunto de ellos puede repetirse 0, 1 ó más veces:
– elemento Elemento repetido 1 única vez
–? Elemento repetido 0 ó 1 vez
–* Elemento repetido 0 ó más veces
–+ Elemento repetido 1 ó más veces
DTD. Elementos (iv)

<!ELEMENT LIBRO (Autor, Editorial)>


<!ELEMENT Autor (#PCDATA)>
<!ELEMENT PELICULA (Actor|Actriz|Director)+>
<!ELEMENT PELICULA ((Actor | Actriz)*, Director, Maquillaje?)>
<!ELEMENT PELICULA (#PCDATA | Actor)*>
<!ELEMENT PELICULA (Titulo, Genero, (Actor | Actriz | Narrador)*)>
<!ELEMENT FICHA (Nombre+, Apellido+, Direccion*, foto?,
TelFijo*|TelMovil*)
<!ELEMENT FICHA ((Sr | Sra | Srta)?, Nombre, Apellido*)>
<!ELEMENT Sr EMPTY>

DTD. Atributos (i)

 Un elemento puede opcionalmente declarar uno o más atributos


• <!ATTLIST Elemento Atributo Tipo Modificador>
 Los atributos de un elemento pueden incluirse en una o más declaraciones <!ATTLIST
...>.
 Si se hace en la misma declaración, basta con separar con un espacio (espacio,
tabulador, retorno de carro).

DTD. Atributos (ii)

Tipo cadena: CDATA


<!ATTLIST Autor Nacionalidad CDATA>
• Tipo enumerado:
<!ATTLIST Pelicula Genero (Ficcion | Terror | Humor)>
• Tipo simbólico:
– ID: valdrá como identificador en el resto del documento, sólo un atributo ID por cada
elemento.
– IDREF, IDREFS: su valor debe coincidir con algún otro atributo de tipo ID en el resto del
documento XML. IDREFS separa las referencias por espacio. Ej.: “ID1 ID2 ID3”.
– ENTITY, ENTITIES: su valor debe coincidir con una o más entidades no analizadas. –
NMTOKEN, NMTOKENS: su valor ha de ser una cadena de tipo token. Ej.: <LIBRO ISBN=“9-
34532-33-81”></LIBRO>

DTD. Atributos (iii)


Modificadores:
• #REQUIRED: Este atributo debe introducirse obligatoriamente.
Ej.: <!ATTLIST Pelicula Titulo CDATA #REQUIRED>
• #IMPLIED: Indica que el atributo es opcional.
• ValorPredeterminado: Si se omitiese el atributo, los procesadores recogerían este valor por
omisión. Ej.: <!ATTLIST Pelicula Genero (Ficcion | Terror | Humor) “Humor”> <!ATTLIST Autor
Nacionalidad CDATA “Espanola”>
• #FIXED: se incluya o no se incluya el atributo, los procesadores siempre obtendrán este
mismo valor
<!ATTLIST Autor Nacionalidad CDATA #FIXED “Espanyola”>
DTD. Problemas

 Una DTD no sigue el formato de un documento XML estándar.


 Esto representa un problema para los parsers.
 No se soportan distintos tipos de datos al estilo de los lenguajes de programación.
 No se pueden crear tipos de datos personalizados.
 No se soportan los espacios de nombres.
 El número de ocurrencias no se puede controlar al 100%.
 Por estas y otras razones, surgen los Schemas (Esquemas) XML.

XML Schema

 XML Schema es una alternativa más potente a las DTDs.


 XML Schema permite escribir esquemas detallados para documentos XML, utilizando
la sintaxis estándar de XML.
 XML Schema describe la estructura de un documento XML.
 El lenguaje XML Schema también se denomina
 XML Schema Definition (XSD).

¿Para que sirve un XML Schema?

El objetivo de un XML Schema es definir los elementos que permiten construir un documento
XML válido, igual que las DTDs.
Un XML Schema define:
• los elementos que pueden aparecer en un documentos
• atributos que pueden aparecer en un documento
• qué elementos son elementos hijos
• el orden de los elementos hijos
• el número de elementos hijos
• si un elemento está vacío o puede incluir texto
• los tipos de datos de sus elementos y atributos
• los valores por defecto y fijos para elementos y atributos

XML Schema es el sucesor de DTD´s

En un futuro, los XML Schema serán utilizados en la mayoría de las aplicaciones Web y
reemplazarán a las actuales DTDs:
• Los XML Schemas son extensibles.
• Los XML Schemas son más ricos semánticamente que las DTDs.
• Los XML Schemas están escritos siguiendo la sintaxis estándar de XML.
• Los XML Schemas soportan tipos de datos.
• Los XML Schemas soportan namespaces.
XML Schema es un estándar de W3C
XML Schema soporta tipos de datos

La característica mas importante de los XML Schemas es que soportan tipos de datos.
Los tipos de datos permiten:
• describir qué elementos están permitidos
• validar si los datos son correctos
• trabajar con los datos de una base de datos
• definir Facets (restricciones)
• definir patrones de datos (formatos)
• convertir datos considerando diferentes tipos de datos

XML Schema utiliza sintaxis de XML

Otra característica importante de los XML


Schemas es que están escritos en XML.
Beneficios:
• No hay necesidad de aprender un lenguaje nuevo.
• Se puede utilizar un editor de XML para editar el XML Schema.
• Se puede utilizar un procesador de XML para procesar un XML Schema.
• Se puede manipular un XML Schema utilizando XML DOM.
• Se puede transformar un XML Schema utilizando XSLT.

Transmisión de datos sin ambigüedad

 Cuando se transmite información desde un emisor a un receptor, es necesario que


ambas partes conozcan el mismo protocolo de comunicación.
 Con XML Schemas, el emisor puede describir los datos de manera que el receptor lo
entienda.
 Una fecha como: "03-11-2006", dependiendo del país, puede ser interpretada como "3
de noviembre" y en otros países como "11 de marzo".

Con lo cual, al definir un elemento de la siguiente manera:

• <fechaInicio type="date">2006-03-11</fechaInicio> se asegura un mutuo entendimiento


sobre el contenido, porque el tipo de dato “date” requiere el formato “YYYY-MMDD”.

Los XML Schema son extensibles

 Los XML Schemas son extensibles porque están escritos en XML.


 Con una definición de XML Schemas extensible se podrá:
• reutilizar el Schema en otros Schemas
• crear tipos de datos propios derivados de los tipos estándar
• referenciar varios Schemas en el mismo documento
No es suficiente que el XML Schema esté bien formado
Un documento XML bien formado es un documento que cumple las reglas sintácticas de XML
como:
• Empezar con la declaración XML.
• Tener un único elemento raíz.
• Las etiquetas de apertura deben tener sus correspondientes etiquetas de cierre.
• Los elementos son “case-sensitive”.
• Todos los elementos deben cerrarse.
• Todos los elementos tienen que estar adecuadamente anidados.
• Los atributos deben estar entre comillas.
• Se deben utilizar las entidades para utilizar caracteres especiales.
A pesar de que los documentos estén bien formados pueden seguir teniendo errores.

Ejemplo XML Schema

Referencia a un XML Schema

Cómo se referencia un archivo XML Schema desde un documento XML.


XML Schema. Elemento raíz
El elemento <schema> es el elemento raíz (elemento documento) de todo XML Schema:

XML Schema. Elementos simples (i)

 Un elemento simple es un elemento XML que sólo puede contener texto. No puede
contener ni elementos ni atributos.
 Sin embargo, la restricción "sólo texto" no es del todo cierta. El texto puede contener
muchos tipos de datos.
 Puede ser de uno de los tipos incluidos en la definición de XML Schema (boolean,
string, date, etc.), o puede ser de un tipo definido por el usuario.
 Además, se pueden añadir restricciones (facets) a los tipos de datos, para limitar así su
contenido, o para requerir que ciertos datos sean conformes a un patrón específico.

XML Schema. Elementos simples (ii)

La sintaxis de un elemento simple es:

donde xxx es el nombre del elemento e yyy es el tipo de datos del elemento.
Los tipos de datos más comunes en XML Schema son:
• xs:string
• xs:decimal
• xs:integer
• xs:boolean
• xs:date

XML Schema. Elementos simples (iii)


XML Schema. Elementos simples (iv)

 Se pueden especificar valores por defecto o valores fijos para los elementos simples.
 Se asignará automáticamente el valor por defecto si no se especifica otro valor para el
elemento.

 Se asignará automáticamente un valor para el elemento, pero en este caso, dicho valor
no puede ser modificado

XML Schema. Atributos (i)

 Los elementos simples no pueden tener atributos.


 Un elemento con atributos será considerado un tipo complejo (complex type).
 Sin embargo, los atributos se definen como un tipo simple

donde xxx es el nombre del elemento e yyy es el tipo de datos del atributo.

XML Schema. Atributos (ii)

Código en XML:

Código en XML Schema:

XML Schema. Atributos (iii)

 Se pueden especificar valores por defecto o valores fijos para los atributos.
 Se asignará automáticamente el valor por defecto si no se especifica otro valor para el
atributo.

 Se asignará automáticamente un valor para el atributo, pero en este caso, dicho valor
no puede ser modificado
Por defecto los atributos son opcionales, pero se puede hacer que éstos sean requeridos

XML Schema. Restricciones (i)

Las restricciones en XML Schema se denominan “FACETS”

XML Schema. Restricciones (ii)

Para limitar el contenido de un elemento XML a un conjunto de valores, se utilizará la


restricción enumeration.

XML Schema. Restricciones (iii)

Otra alternativa:
XML Schema. Restricciones (iv)

Para limitar que el contenido de un elemento


XML solo pueda tener una serie de números o letras se deberá utilizar la restricción pattern.

XML Schema. Restricciones (v)

Los únicos valores permitidos son tres letras de la ‘a’ a la ‘z’ escritas en mayúscula.

Los únicos valores permitidos son tres letras de la ‘a’ a la ‘z’ escritas en mayúscula o en
minúscula:

El único valor permitido es una de las siguientes letras: ‘x’, ‘y’, o ‘z’:

Los únicos valores permitidos son cinco dígitos comprendidos entre ‘0’ y ‘9’:

XML Schema. Restricciones (vi)

Los únicos valores permitidos son cero o más ocurrencias de letras en minúscula desde la ‘a’ a
la ‘z’:

Los únicos valores permitidos son una o más ocurrencias de dos letras. En cada par de letras, la
primera irá en minúscula y la segunda en mayúscula. Por ejemplo, "sToP" sería validado por el
patrón, pero no "Stop“, "STOP“ ó "stop":

Los únicos valores permitidos son exactamente ocho caracteres, donde esos caracteres
pueden ser letras minúsculas, letras mayúsculas o un dígito del 0 al 9:
XML Schema. Restricciones (vii)

Para especificar como se van a tratar los caracteres en blanco, se utilizará la restricción
whiteSpace

XML Schema. Restricciones (viii)

Si se desea que XML elimine todos los espacios en blanco; LF, CR, tabulaciones, los espacios de
principio y de final de cadena, y los espacios intermedios (dejando para este caso sólo uno):

XML Schema. Restricciones (ix)


XML Schema. Restricciones (x)

XML Schema. Elementos complejos (I)

Un elemento complejo es un elemento XML que puede tener más elementos y/o atributos.
Hay cuatro clases de elementos complejos:
• Elementos vacíos.
• Elementos que contienen otros elementos.
• Elementos que contienen sólo texto.
• Elementos que contienen ambos: otros elementos y
texto.
Nota: Cada uno de estos elementos pueden contener atributos.

XML Schema. Elementos complejos (ii)

Elemento XML complejo vacío:

Elemento XML complejo que contiene sólo otros elementos:

Elemento XML complejo que contiene sólo texto:

Elemento XML complejo que contiene ambos (texto y otro elementos):


XML Schema. Elementos complejos (iii)

Se puede definir un elemento complejo en XML


Schema de dos formas distintas :

1. El elemento “empleado" se puede declarar directamente nombrando el elemento :

XML Schema. Elementos complejos (iv)

2. El elemento “empleado" se puede declarar directamente nombrando el elemento :

Usando este método, muchos elementos se pueden referir a la misma definición de tipo
complejo

XML Schema. Elementos complejos (v)

Además, se puede describir un elemento complejo basándose en otro elemento complejo


añadiendo más elementos:
XML Schema. Elementos complejos vacíos

Definición en XML Schema

XML Schema. Elementos complejos con sólo elementos

La etiqueta <xs:sequence> indica que los elementos definidos deben aparecer en el orden
descrito dentro del elemento “persona”.

Elementos complejos con texto y otros elementos

Para permitir que aparezcan caracteres entre los elementos hijos, el atributo mixed debe estar
a "true".
XML Schema. Indicadores para elementos complejos

Permiten realizar el control de qué elementos van a ser utilizados en un documento XML.
Hay siete tipos de indicadores:
• Indicadores de orden:
– All
– Choice
– Sequence
• Indicadores de ocurrencia:
– maxOccurs
– minOccurs
• Indicadores de grupo:
– Group name
– attributeGroup name

XML Schema. Indicadores de orden

XML Schema. Indicadores de ocurrencia

Indicador <maxOccurs>: El número máximo de veces que se puede dar un elemento.


Indicador <minOccurs>: El número mínimo de veces que un elemento puede aparecer

Por defecto, <minOccurs> = “1”


XML Schema. Indicadores de grupo de elementos

Define grupos de elementos para poder referenciarlos varias veces.

XML Schema. Indicadores de grupos de atributos

Define grupos de atributos para poder referenciarlos varias veces.

XML Schema. <any> (i)

El elemento <any> permite extender documentos con elementos que no han sido descritos en
el Schema.
[Link]

Después del elemento <apellidos> se podrían poner otros elementos que no están definidos
en el Schema.
XML Schema. <any> (ii)

XML Schema. <anyAttribute> (i)

El elemento <anyAttribute> permite extender documentos con atributos que no han sido
descritos en el Schema.

Cuando se describa una persona en el documento XML se podrá extender con atributos de
otro Schema.

XML Schema. <anyAttribute > (ii)


XML Schema. String

El tipo de dato String permite contener cualquier tipo de caracteres, LF (line feeds), CR
(carriage returns), y tabulaciones

XML Schema. normalizedString

El tipo de datos normalizedString permite contener cualquier carácter pero el procesador de


XML sustituye los LF, CR y caracteres de tabulación por espacios.

XML Schema. Token

El tipo de datos token permite contener cualquier carácter, pero el procesador de XML
eliminará los LF, CR, caracteres de tabulación, espacios al principio, espacios al final, y espacios
entre medias

XML Schema. Cadenas de caracteres


XML Schema. Fechas

XML Schema. Decimal

El tipo de dato decimal se utiliza para especificar valores numéricos decimales.

XML Schema. Integer

El tipo de dato integer sirve para poder describir números sin la parte fraccional.

XML Schema. Datos numéricos


XSLT / XPath

Documentos XML
– Documentos de texto con etiquetas
– Contienen esencialmente información (no se entra en detalles de
presentación)
– La información se organiza jerárquicamente
– Aunque son legibles por un humano, se supone que la información
se procesará
– Así se obtendrán formas de (re)presentación más adecuadas
– Es posible que esas representaciones impliquen también seleccionar
información
• Necesidad de algún medio para expresar la transformación de un
documento XML
– En otro documento XML (seleccionando, reordenando, calculando...)
– En un documento que una persona pueda utilizar de manera directa
(leer, imprimir...)

Pensemos en nuestra propia solución


• Fichero XML de ejemplo:

Justificación de XSLT (III)

• Supongamos que necesitamos extraer sólo la información de nombre y fecha de nacimiento


• Supongamos que, dependiendo del caso, necesitamos que la fecha aparezca en español, o en
inglés, o con el año de dos dígitos, o sólo el año, o...
• Del mismo documento pueden extraerse otros muy diversos:
Nomenclatura de las tecnologías

• XSLT: eXtensible Stylesheet Language for Transformations. Permite definir cómo se


transforma un documento XML en otro documento XML Además de XML, se puede generar
como salida HTML y texto
• XSL-FO: eXtensible Stylesheet Language – Formatting Objects. Conversión del XML en un
formato “imprimible” y legible por una persona (ej.: PDF). Inicialmente, este era el propósito
del XSL
• XPath: Una sintaxis para aludir a diversas partes de un documento XML La parte de
transformaciones ganó en importancia, y se llega a la terminología actual:

Estructura básica de una hoja XSLT (I)

• Una hoja XSLT transforma un documento XML en:


– Otro documento XML
– Un documento HTML
– Texto
• La hoja XSLT consta de una serie de reglas
• Una hoja XSLT es también un documento XML (!)

Estructura básica de una hoja XSLT (II)


Procesadores XSLT

• Existen varias formas de realizar la transformación


– Procesador XSLTPROC
– Procesador MSXML
• Un ejecutable que se limita a llamar a la biblioteca de
transformación de Internet Explorer
– Se puede invocar a la biblioteca de transformación desde un programa
– Enlace entre el fichero XML y la hoja XSLT
• El fichero se puede ver directamente en Internet Explorer o en otro navegador que soporte
XSLT
• Desventaja: el fichero queda "ligado" a esa vista, por lo menos si se abre directamente
• Bajo la etiqueta <?xml...?> del fichero XML, se añade
<?xml-stylesheet type="text/xsl" href="[Link]"?>

Estructura básica de una hoja XSLT (III)

• La hoja XSLT contiene básicamente tres tipos de elementos:

– Elementos de XSLT. Pertenecen al namespace xsl, y por tanto sus etiquetas llevan el prefijo
xsl: . Son el equivalente a las palabras clave del lenguaje de programación (definidos por el
estándar e interpretados por cualquier procesador de XSLT)
– Elementos LRE (Literal Result Elements). Son elementos que no pertenecen a XSLT, sino que
se repiten en la salida sin más (ejemplo: un elemento <fecha>)
– Elementos de extensión. Son elementos no-estándar (al igual que los LRE), que son
manejados por implementaciones concretas del procesador. Normalmente, no los utilizaremos

xsl:stylesheet

• Es el elemento raíz de una hoja XSL


• Se puede utilizar también xsl:transform (son prácticamente equivalentes)
• Atributos principales:
– version: Suele ser 1.0
– xmlns:xsl: Asigna el namespace xsl (las etiquetas de XSL empiezan por el prefijo xsl:). El valor
para XSLT suele ser [Link]
• Otros atributos:
– extension-element-prefixes: Sirve para declarar los prefijos de elementos que deben
considerarse elementos de extensión y no LRE (se incluyen separados por espacios)
– exclude-result-prefixes: Sirve para hacer que los elementos de ciertos namespaces (prefijos)
no se reproduzcan en la salida
Elementos del nivel superior

• Son elementos hijos de xsl:stylesheet


• Además, son hijos directos (tampoco pueden anidarse)
• Dos excepciones: xsl:variable y xsl:param
• No son instrucciones sobre cómo procesar elementos, sino estructuras contenedoras para
instrucciones
• Son los siguientes:

xsl:output

• Define qué tipo de salida se va a generar como resultado


• Atributos:
– method: puede tomar los valores xml, html y text (y también un valor de extensión, con el
prefijo correspondiente)
– encoding: define la forma de representar caracteres que se adoptará en la salida. Ejemplos:
• iso-8859-1, UTF-8, UTF-16...
• windows-1252 (genera los caracteres acentuados con la codificación de Windows)
– omit-xml-declaration: valores yes o no. Indica si se genera o no la declaración <?xml...?>
– indent: valores yes o no. Si es yes, el procesador (para salidas xml o html) indentará el
resultado

xsl:template (I)

• El bloque fundamental de una hoja XSLT


• Un template tiene dos elementos principales:
– Una expresión de emparejamiento
– Las instrucciones de procesamiento que contiene
• Si la expresión de emparejamiento coincide con un elemento del fichero XML, el template
entra en acción y se ejecutan las instrucciones de procesamiento
• Las instrucciones de procesamiento pueden ser instrucciones de XSLT propiamente dichas o
bien LREs
• Al procesar un template, se va construyendo el árbol resultado, en el que se incorpora el
resultado de ejecutar instrucciones o bien los LREs (directamente)
xsl:template(II)
• Atributos:
– match: Su valor es una expresión que se usa para seleccionar nodos del árbol de entrada
(cuando encaja, el template entra en acción)
– name: Además de cuando encaja, un template puede invocarse explícitamente (en ese caso
se necesita que tenga un nombre)
• Ejemplo:

Recapitulando...

• Elemento fundamental: xsl:stylesheet, en el que incluimos versión (1.0) y el namespace xsl


• Dentro de él, los elementos del nivel superior
• Utilizamos xsl:output para decir si la salida es XML, HTML o texto normal, y algunos detalles
más de cómo se genera
• Utilizamos xsl:template como bloque básico
• Problemas (en este punto):
– No hemos visto cómo escribir expresiones match para los templates
– No hemos visto qué instrucciones podemos utilizar para generar la salida
– Con lo visto hasta ahora, prácticamente sólo podemos procesar el nodo raíz y generar una
salida constante (LRE)
• Primer problema: cómo procesar más allá del nodo raíz

xsl:apply-templates

• El procesador empareja con sus reglas por defecto (recorre todo)


• Si encuentra una regla concreta, aplica esa (no sigue procesando los hijos de ese nodo, salvo
que se lo indiquemos)
• xsl:apply-templates se utiliza para indicar al procesador que intente emparejar templates con
cierto nodo o conjunto de nodos (nodeset)
• Atributos:
– select: Su valor es una expresión XPath de conjunto de nodos. El procesador intentará
emparejar ese conjunto de nodos con sus templates respectivos
• Ejemplo: apply-templates1
• xsl:apply-templates permite realizar un tratamiento recursivo de todos los elementos del
árbol fuente
xsl:value-of

• Resuelto cómo procesar más allá del nodo raíz


• Pero hasta ahora sólo hemos generado salidas constantes (LREs)
• ¿Cómo averiguar el contenido de un nodo?
• xsl:value-of
– Permite evaluar una expresión XPath
– El contenido del nodo actual viene dado por la expresión “.”
• Ejercicio: modificar el anterior para que escriba los valores reales de día, mes y año
• Resumen:
– xsl:stylesheet
• xsl:output
• xsl:template match=...
– xsl:value-of select=...
– xsl:apply-templates select=...
• Esos match y select requieren de XPath

Introducción a XPath

• XPath es una especificación del W3C (aprobada el mismo día que XSLT)
• Define cómo acceder a partes de un documento XML
• Se basa en relaciones de “parentesco” entre nodos
• Su estilo de notación es similar a las rutas de los ficheros, pero se refiere
a nodos en un documento XML
– Ejemplo: /fecha/dia
• XPath se usa en XSLT, pero también en XSL-FO, XPointer, XLink, y otros
• En XSLT, XPath se utiliza en los valores de atributos (tales como match o
select)
• Frecuentemente, como expresión de emparejamiento

Términos básicos en XPath

• Nodo actual (current node)


– Es un nodo que está seleccionado cuando se va a evaluar una expresión XPath
– Constituye el punto de partida al evaluar la expresión
• Nodo contexto (context node)
– Para evaluar una expresión, se van evaluando subexpresiones parciales
– Cada vez que se evalúa una subexpresión se obtiene un nuevo conjunto de nodos (node-set)
que es el nuevo contexto para evaluar la siguiente subexpresión
• Tamaño del contexto (context size)
– El número de nodos que se están evaluando en un momento dado en la expresión XPath
Expresiones XPath

• Una expresión XPath arroja (tras ser evaluada) una expresión de 4 tipos posibles: conjunto de
nodos (node-set), booleano, número, cadena
• Tokens válidos en una expresión XPath
– Paréntesis y similares: ( ) { } [ ]
– Elemento actual . y elemento padre ..
– Atributo @, elemento * y separador ::
– La coma ,
– El nombre de un elemento
– Tipo de nodo (comment, text, processing instruction, node)
– Operadores: and, or, mod, div, *, /, //, |, +, -, =, !=, <, <=, >, >=
– Nombres de función
– Nombre de eje (axis): ancestor, ancestor-or-self, attribute, child, descendant, descendant-or-
self, following, following-sibling, namespace, parent, preceding, preceding-sibling, self
– Literales, entre comillas dobles o simples (se pueden anidar alternadas)
– Números
– Referencias a variables ($nombreVariable)

Expresiones XPath
• Hay que considerar una expresión XPath como un “predicado”, que devuelve todo lo que
encaja con dicho predicado
• Lo que devuelve es procesado por la regla XSL
• Las expresiones XPath se usan sobre todo en los atributos match, select y test

Node-set

Node-set
– Grupo de nodos (no ordenado) resultado de evaluar una expresión XPath
– Los nodos pueden ser de 7 tipos

Los elementos de un node-set son siempre hermanos (da igual lo que fuesen originalmente)
– Sus hijos originales no están incluidos (no hablamos de “subárboles”), pero se puede acceder
a ellos
Location path (ruta de localización)

• Se corresponde con la idea intuitiva de “ruta de directorio”


• Un location path siempre devuelve un node-set
• Tipos de rutas de localización
– Patrones (patterns): sólo permiten el uso de los ejes child y attribute (se verá después)
– Absolutas: parten de la raíz
– Relativas: no parten de la raíz (depende del nodo de contexto, context node).
Este cambia con cada /, que actúa como separador de los pasos de localización. En cada paso
se selecciona un nuevo node-set que pasa a ser el nodo de contexto

Pasos de localización

• Paso de localización: cada paso de una ruta de localización (separados por /)


• Un paso de localización consta de:
– Eje (axis). Es la relación entre el nodo de contexto y el paso
– Prueba de nodo (node test). Es el “nombre de directorio”
– Predicado (predicate). Expresión XPath entre corchetes.
• El eje a veces está implícito (no se pone). El predicado es opcional

Prueba de nodo (node test)

• La forma más simple es escribir simplemente el nombre del nodo (su etiqueta)
• También se puede utilizar el asterisco * que simboliza cualquier nombre
• Ejemplos:
– /universidad/euitio/alumnos/alumno Encaja con cualquier nodo “alumno” que sea hijo de un
nodo “alumnos” que sea hijo de un nodo “euitio” que sea hijo del nodo “universidad” que será
el nodo raíz
– /universidad/* Encaja con cualquier nodo que sea hijo del nodo “universidad” que será el
nodo raíz
– universidad/* Encaja con cualquier nodo que sea hijo de un nodo “universidad” que sea hijo
del nodo de contexto
• IMPORTANTE: // indica “que sea hijo de cualquiera
Ejes (axis)
• El eje denota la relación de un paso de localización con su nodo de contexto
• Hay una serie de ejes posibles: ancestor, ancestor-or-self, attribute, child, descendant,
descendant-or-self, following, following-sibling, namespace, parent, preceding, preceding-
sibling, self
• El eje y la prueba de nodo se separan mediante el operador ::
• Equivale a “que es un”, pero sus argumentos se leen de derecha a izquierda
• child está implícito y casi nunca se pone. Para el nodo raíz, está implícito self (self denota al
nodo de contexto)
• Ejemplos:
– /universidad/euitio Equivale de manera implícita a /self::universidad/child::euitio
– /universidad/euitio/following-sibling::* Todos los nodos que son “hermanos después de”
euitio (en el orden del documento) que es hijo de universidad

Predicado
• Añade un nivel de verificación al paso de localización
• Expresión booleana
• Dada la prueba de nodo, y dado el eje, del conjunto de nodos resultante quedan sólo los que
cumplan el predicado
• En el predicado pueden intervenir funciones XPath (ojo con las expresiones, > ‡ &gt;)

Funciones XPath

• Hay una gran variedad de funciones


– boolean(): convierte a booleano. Aplicada a un conjunto de nodos, devuelve true si no es
vacío. not(), true()
– count(): Devuelve el número de nodos en un conjunto de nodos
– name(): Devuelve el nombre de un nodo (su etiqueta). local-name(), namespace-uri()
– position(): Devuelve la posición de un nodo en su contexto (empieza en 1) last()
– Biblioteca de strings. normalize-space(), string(), concat(), stringlength()
– sum()

Acceso a atributos

• Se puede acceder a un elemento atributo gracias al eje attribute::


• Contiene todos los nodos atributo del nodo contexto
• Una abreviatura de esto es la arroba @
• Ejemplo:
– <xsl:value-of select=“individuo/@edad”/> Nodos de nombre “edad” que son atributos de
nodos “individuo”

Acceso a elementos de otro documento XML

• Muy importante: se puede acceder a datos de otro fichero XML


• Uso de la función document()
Recapitulando...

• Con XPath podemos


– Seleccionar los nodos para la aplicación de templates
– Obtener valores (bastante elaborados)
– La selección de nodos puede basarse en similitud de nombres, en el eje y/o en ciertas
condiciones (predicado)

Instrucciones XSL
• No son elementos de nivel superior; son las instrucciones contenidas dentro de los templates
• Indican cómo realizar el procesamiento
• xsl:value-of es un caso simple
• Otras instrucciones permiten realizar tratamientos condicionales, iteraciones, construcción
de elementos en el árbol resultado, etc.

Ordenar: xsl:sort

• xsl:sort
– Se especifica dentro de xsl:apply-templates o xsl:for-each
– ¿Podría haber sido un atributo?
– Su atributo es select
– Indica cómo se establece el orden

Condicional: xsl:if
• xsl:if
– Atributo: test
– El valor del atributo es una expresión booleana
– Las instrucciones que contiene se ejecutan sólo si la condición se cumple

Condicional: xsl:choose

• xsl:choose
• Contiene elementos xsl:when
– Atributo: test (similar al de xsl:if)
– Son los diferentes “casos” de una sentencia CASE
• Caso por defecto: xsl:otherwise (sin atributos)

Iteración: xsl:for-each

• xsl:for-each
– Atributo: select
– Aplica las instrucciones de su interior para todos y cada uno de los nodos del conjunto de
nodos dado por select
Construcción de elementos en el árbol resultado (I)

• ¿Cómo generar un elemento con cierta etiqueta y “construir” sus atributos?


• A veces la sintaxis no nos lo permite directamente. Posible ejemplo:
<BODY BGCOLOR=“<xsl:value-of select=“color-elegido”/>”>
• Se pueden utilizar los llamados AVT (Attribute Value Template): las expresiones entre llaves
se evalúan como si hubiera un value-of
– Para poner llaves "de verdad", poner cada una dos veces
• Se pueden necesitar instrucciones para “construir” dichos elementos
• xsl:element
– Construcción de un elemento en el árbol resultado
– Atributos: name
• xsl:attribute
– Añadir un atributo al elemento en cuestión
– Atributos: name
– El valor está encerrado como texto libre dentro de xsl:attribute

Construcción de elementos en el árbol resultado (II)

Ejemplo: código XSLT equivalente


Introducción.

XPath es un lenguaje de consulta que permite recuperar información de un


documento XML. Obtiene su denominación por el uso que hace de una notación de
caminos para navegar a través de la estructura jerárquica de un documento XML.
Fue creado para su uso con el estándar XSLT en el que además de direccionar
partes de un documento XML, está diseñado de modo que tiene un subconjunto
natural que puede usarse para cotejar, es decir, comprobar si un nodo encaja con un
patrón o no.

XPath opera sobre la estructura lógica abstracta de un documento XML, más que en su sintaxis
superficial y modela el documento XML como un árbol de nodos.

Hay diferentes tipos de nodos, incluyendo nodos elemento, nodos atributo y nodos texto.
XPath define un modo de calcular un valor de cadena para cada tipo de nodo.

Algunos tipos de nodo también tienen nombres.


La construcción sintáctica básica en XPath es la expresión. Las expresiones son evaluadas para
producir un objeto, que tendrá uno de los siguientes cuatro tipos básicos:

• Conjunto de nodos (una colección desordenada de nodos sin duplicados).


• booleano (verdadero o falso).
• número (un número en punto flotante).
• cadena (una secuencia de caracteres UCS).

Terminología.

El funcionamiento de XPath se basa en la representación del documento XML


como un árbol de nodos. En las siguientes ilustraciones se muestra un ejemplo de
cómo sería esta representación:
 Comienza por un elemento raíz.
 Despliega una serie de elementos intermedios que dependen del elemento raíz.
 Finaliza en varios elementos finales (también denominados nodos hoja).

A continuación, se muestran algunos conceptos de interés

 Nodo actual (Current): nodo que está seleccionado cuando se evalúa una expresión
XPath, es decir, es el comienzo desde donde se empieza a evaluar dicha expresión. En
el ejemplo, si el nodo actual fuera el nodo alumno con texto "Nando" y se buscaran el
resto de alumnos, se perderían los anteriores.
 Nodo contexto (Context): son aquellos nodos que son evaluados de forma parcial para
obtener el resultado de la evaluación de la expresión XPath. Hay que tener en cuenta
que en cada evaluación de las subexpresiones se obtiene un nuevo conjunto de nodos
que pasa a ser el nuevo contexto a evaluar en las siguientes subexpresiones.
 Tamaño del contexto: es el número de nodos que se están evaluando en la expresión
XPath en un momento dado. También se denomina tamaño contextual y siempre se
corresponde con un entero positivo (no nulo).
 Posición del contexto: es la posición que ocupa dentro del documento el nodo
contexto. También se denomina posición contextual y siempre se corresponde con un
entero positivo (no nulo) menor o igual que el tamaño contextual.
Modelos de datos.

Como se comentó anteriormente, XPath opera sobre un documento XML considerándolo


como un árbol de nodos. En el modelo de datos se describe la forma en que XPath modela un
documento XML como un árbol. Este modelo es solamente conceptual y no impone ninguna
implementación en particular. Los documentos XML sobre los que opera XPath deben ser
acordes con la Recomendación de Espacios de Nombres XML.

Para cada tipo de nodo, se determinar un valor de cadena. Para algunos tipos de nodo, el valor
de cadena es parte del nodo; para otros tipos de nodo, se calcula a partir del valor de cadena
de nodos descendientes.

Hay siete tipos de nodos: nodos raíz, nodos elemento, nodos texto, nodos atributo, nodos
espacio de nombres, nodos instrucción de procesamiento y nodos comentario. Los nodos raíz y
los nodos elemento poseen una lista ordenada de nodos hijo. Los nodos nunca comparten un
hijo: si un nodo no es el mismo nodo que otro, entonces ninguno de los hijos del primer nodo
será el mismo nodo que ninguno de los hijos del otro nodo. Todos los nodos salvo el nodo raíz
tienen exactamente un padre, que es o bien un nodo elemento o bien el nodo raíz. Un nodo
raíz o un nodo elemento es el padre de cada uno de sus nodos hijo. Los descendientes de un
nodo son los hijos del nodo y los descendientes de los hijos del nodo.

1. Nodo raíz (root): es la raíz del árbol. No aparecen nodos raíz salvo como raíz del árbol.

Se reconoce por su identificador "/". Es muy importante no confundirlo con el elemento raíz
del documento, de hecho el elemento raíz está contenido en el nodo raíz. Esta diferencia se
aclara viendo el ejemplo:

 Nodo raíz : es el elemento "/" del árbol.


 Elemento raíz : es el elemento "universidad".

2. Nodo elemento (element): cada nodo elemento del árbol de nodos representa un
elemento del documento.

 Cada nodo elemento puede tener hijos que serán otros nodos elemento y/o nodos
hoja (nodos comentario, nodos instrucción de procesamiento y nodos texto).
 Los nodos elemento pueden tener un identificador único (ID) si el documento XML se
acompaña de un DTD que especifique dicho atributo.
 En el ejemplo, entre todos los nodos elemento se puede observar el nodo elemento
“carrera” con seis nodos elementos hijos “alumnos”.

3. Nodos atributo (attribute): cada nodo elemento tiene asociado un conjunto de nodos
atributo; el elemento es el padre de cada uno de esos nodos atributo; sin embargo, los
nodos atributo no son hijos de su elemento padre. Los elementos nunca comparten
nodos atributo.

En el ejemplo de la Ilustración 16 un atributo sería “nombre”, que diferencia el tipo de


asignatura.
4. Nodo texto (text): hace referencia a todos los caracteres que no están limitados por
etiquetas. En cada nodo texto se agrupan todos los datos de caracter que sea posible:
un nodo texto nunca tiene un hermano inmediatamente anterior o siguiente que sea
nodo texto ni contiene ningún tipo de hijos.

Los nodos texto siempre tienen al menos un caracter. Los caracteres dentro de comentarios,
instrucciones de procesamiento y valores de atributos no producen nodos texto.

En el ejemplo los nodos texto serían los delimitados por la etiqueta “alumno”, es decir: “Pepi”,
“Fernando”, “Carolina”, “María”, “Álvaro” y “Nando”.

5. Nodo instrucción de procesamiento (processing Instruction): hay un nodo instrucción


de procesamiento por cada instrucción de procesamiento, salvo para aquellas que
aparezcan dentro de la declaración de tipo de documento.
6. Nodo espacio de nombres (namespace): cada elemento tiene un conjunto asociado de
nodos espacio de nombres, uno para cada uno de los distintos prefijos de espacio de
nombres con efecto sobre el elemento y uno para el espacio de nombres por defecto
si hay alguno con efecto sobre el elemento. El elemento es el padre de cada uno de los
nodos espacio de nombres; sin embargo, los nodos espacio de nombres no son hijos
de su elemento padre. Los elementos nunca comparten nodos espacio de nombres.
7. Nodo comentario (comment): corresponde con cada comentario del documento XML,
salvo aquellos que aparecen dentro de la declaración de tipo de documento.
Una ruta de localización (location path) es uno de los tipos de expresiones más importantes
que se pueden especificar en XPath, el resultado generado siempre es un node-set. La ruta de
localización siempre comenzará a aplicarse desde el nodo contextual, a menos que se indique
lo contrario estableciendo una ruta explícita.

Existen distintos tipos de rutas de localización:

Relativas: consiste en una secuencia de uno o más pasos de localización separados por “/”
comenzando desde el nodo contextual, no el nodo raíz.

En cada paso se selecciona un nuevo node-set que pasa a ser el nuevo nodo contextual.
• Absolutas: comienzan por "/", lo que significa que se aplicará desde el nodo raíz, seguido
opcionalmente por una ruta de localización relativa.
• Patrones : obligan al uso de los ejes "child" y “attribute”.

En la Tabla 27 se muestran algunos ejemplos de rutas de localización con la sintaxis no


abreviada y la abreviada
Pasos de localización.

Paso de localización es el nombre con el que se denomina a cada cambio que se produce en
una ruta de localización, es decir, a cada cambio de “/”. Un paso de localización se compone
de:
• Eje (axis): especifica la relación entre el nodo seleccionado por el paso de localización y el
nodo contextual.
• Nodo prueba (node test): es el elemento filtrado. En el caso de rutas de directorios sería el
propio nombre del directorio y para cualquier nombre se utiliza “*”.
• Predicado (predicate): expresión XPath entre corchetes definiendo aún más la consulta y el
conjunto de nodos seleccionados por el paso de localización. El predicado es opcional.
La sintaxis de un paso de localización queda defina por:

La sintaxis del paso de localización es el nombre de eje y el nodo prueba separados por dos
caracteres de dos puntos, seguido de cero o más expresiones, cada una entre corchetes.
Las tablas que se muestran a continuación exponen los diferentes tipos de pasos de
localización y operadores de los que se pueden hacer uso para una consulta XPath:
Expresiones.
En XPath una expresión es el elemento base que se utiliza para producir un resultado.
Estableciendo una similitud con cualquier lenguaje de programación, una expresión vendría a
ser una instrucción.
Mediante las expresiones se van a poder seleccionar nodos o conjuntos de nodos. Al evaluar
una o varias expresiones se genera un resultado, este resultado podrá ser uno de los siguientes
tipos:

1. Conjunto de nodos (Node-set): es un conjunto de nodos (sin duplicados y sin orden)


que se genera como resultado de evaluar una expresión XPath. Estos nodos pueden
ser de cualquiera de las tipologías anteriormente descritas, pero suelen
corresponderse con los tipos: elemento, atributo y texto.

Los elementos que componen un node-set son siempre hermanos con independencia de lo
que fueran antes de la ejecución de la expresión XPath. Sus hijos originales no están incluidos,
pero se puede acceder a ellos.

Para poder evaluar una o varias expresiones se tiene en cuenta el "contexto", es decir: nodo
contextual, posición contextual, tamaño contextual, asignación de variables, biblioteca de
funciones y declaraciones de espacios de nombres aplicables a la expresión.

Una expresión XPath genera como resultado una lista de referencias (vacía / un nodo / varios
nodos) a los elementos que encajan en el patrón buscado.

2. Cadena: un conjunto de caracteres.


3. Número: representa un número en punto flotante. Algunos operadores relacionados
son: “+” adición; “-“ substracción; “*” multiplicación; “div” división en punto flotante o
“mod” resto de división con truncamiento.
4. Booleano: representa uno de dos valores : verdadero / falso. Algunos operadores
relacionados son: “or” disyunción; “and“ conjunción; “=” igualdad; “!=” diferencia, “<”
menor que o “>” mayor que.
Funciones.

En XPath está permitido el uso de funciones que facilitan realizar algunas operaciones
necesarias para evaluar expresiones.

Cada función se especifica utilizando un prototipo de función, que da el tipo devuelto, el


nombre de la función y el tipo de los argumentos. Si un tipo de argumento es seguido por un
signo de interrogación, entonces el argumento es opcional; en otro caso, el argumento es
obligatorio. Estas funciones se resumen en las siguientes tablas según su tipo
Ejes.

Un eje se define como la relación existente entre un paso de localización y su nodo contextual.
También se puede definir como un conjunto de nodos relativos al nodo contextual.

En la sintaxis de un paso de localización (Eje::NodoPrueba[Predicado]) se puede observar que


el eje y el nodo de prueba se encuentran separados por los caracteres “::” y se puede traducir
por “NodoPrueba[Predicado]”. Los ejes que se pueden utilizar son:

Predicados.

Un predicado es una “condición” que permite seleccionar un nodo con unos determinados
atributos o característica, es decir, un predicado filtra un conjunto de nodos con respecto a un
eje para producir un nuevo conjunto de nodos.
Su sintaxis viene dada entre corchetes ([predicado]) y tiene un valor booleano. Entre los
corchetes se pueden colocar:
Conclusión.

XPath es un lenguaje de consulta para localizar elementos dentro de cualquier documento


XML. Se ha expuesto la estructura de XPath y se ha descrito su funcionamiento junto con todas
las herramientas que posee para una consulta y filtrado más definidos de un documento XML.

En este capítulo se ha querido mostrar el gran potencial de este lenguaje que se ha elegido
para la Gestión de Guías de Práctica Clínica, siendo suficiente lo aquí reflejado para las
consultas que se quieren realizar

También podría gustarte