59
Pedro Pastor (Universitat d 'Alacant) Curso XSL 1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Embed Size (px)

Citation preview

Page 1: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 1

Curso de XSL

Sistema para la visualización de documentos XML

Page 2: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 2

Arquitectura XSL

XSLT: lenguaje para la transformación de documentos XML.XPath: lenguage de consulta en

estructuras XML.

XSLFO: lenguaje de definición de objetos de formato de presentación.

Page 3: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 3

XSLT: definición

eXtensible Stylesheet Language Tranformations.http://www.w3.org/TR/xstl

Diseñado para la transformación de documentos XML en otras estructuras XML y no-XML.

Page 4: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 4

¿ Por que transformar XML ?

Conversión entre modelos de datosAunque legible, XML está pensado para el

intercambio de información entre aplicaciones.

Es necesaria una capa de presentación para hacer “amigable” el acceso de los humanos a la información XML.XML produce separación entre el modelo de datos

y presentación visual.

Page 5: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 5

Cómo se construye una presentación

1. Una transformación estructural desde el documento con la estructura de datos original hacia una estructura que refleje la presentación gráfica deseada.

2. Formateo de la salida, utilizando los elementos de representación visual adecuados.

Page 6: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 6

Proceso de publicación XML-XSL.

Doc. XML

original

HTML,PDF, ...

Procesador de XSLT

XSLT

NuevaEstructuraXML + FO

NuevaEstructuraXML + FO

NuevaEstructuraXML + FO

ProcesadorDe XSLFO

Page 7: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 7

Cómo se realiza la transformación (1)

" lib ro "P C D A T A

tipoA T R IB U T O

"P e d ro"P C D A T A

n o m b reE L E M E N TO

"P a s to r"P C D A T A

a p e llid osE L E M E N TO

a u to rE L E M E N TO

títu loE L E M E N TO

tít itu lo S ecE L E M E N TO

IS B NE L E M E N TO

"X M L "P C D A T A

m a te riaE L E M E N TO

m a te riaE L E M E N TO

c la s if ica c iónE L E M E N TO

R e cu rsoE L E M E N TO

re cu rsoE L E M E N TO

ca tá lo goE L E M E N TO

D o cum e n to X M LN o do D ocu m e n to

Page 8: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 8

Cómo se realiza la transformación(2)

" lib ro "P C D A T A

tipoA T R IB U T O

títu loE L E M E N TO

"P e d ro"P C D A T A

n o m b reE L E M E N TO

"P a s to r"P C D A T A

a p e llid osE L E M E N TO

a u to rE L E M E N TO

"X M L "P C D A T A

m a te riaE L E M E N TO

m a te riaE L E M E N TO

c la s if ica c iónE L E M E N TO

re cu rsoE L E M E N TO

ca tá lo goE L E M E N TO

D o cum e n to X M LN o do D ocu m e n to

Page 9: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 9

Cómo se realiza la transformación(3)

"X M L b y e xam p le"

< li>"T ítu lo "

"P e dro P as to r"

< li>"A u to r"

"X M L " "Ja va"

< u l>

< li>"C la s if ica c ió n"

< u l>"L is ta d e lib ro s"

D o cu m en to H T M LN o do D ocu m e n to

Page 10: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 10

Lo que ve el procesador

La raiz del documento.

Elementos.

Texto.

Atributos.

Espacios de nombres (Namespaces).

Instrucciones de procesamiento (PI).

Comentarios.

Page 11: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 11

Como se implementa la transformación

1. Desarrollo de una aplicación a medida a partir de los “parsers” XML existentes (SAX, DOM).

2. Programación XSLT:lenguaje declarativo para definir reglas de transformación genéricas (dependientes de un contexto).

Page 12: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 12

Procesamiento XSLT-Servidor

XML

ProcesadorXSLT

XML

XSL_FO

HTML Navegador Web

Visor de FOFuente decontenidos

Page 13: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 13

Procesamiento XSLT-Cliente

XML

ProcesadorXSLT

IMAGEN

HTMLNavegador Web

Visor de FO

Fuente decontenidos

Page 14: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 14

Dónde tiene lugar la transformación

1. En el cliente:Tanto el documento XML como el XSL son servidos al cliente y este los procesa.

2. En el servidor:Éste aplica la XSL al XML y genera un documento publicable que envía al cliente (servlet, ASP, CGI, ...).

3. Un tercer programa hace la transformación.

Page 15: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 17

¿ Por que XSL ?

Está diseñado para integrarse en la arquitectura XML.

Es mucho más potente que CSS.

Aunque un poco menos potente que DSSSL es mucho más sencillo de usar.

Cada vez hay más herramientas para XSL.

Page 16: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 18

Composición de los documentos XSL.

XSLT usa XML para describir las reglas: patrones y plantillas.

Un documento XSL se construye a partir de una raiz: <xsl:stylesheet> ... </xsl:stylesheet>

Todos los elementos de XSL que son instrucciones pertenecen al espacio de nombres: xmlns:xsl=“http://www.w3.org/XSL/Transform/1.0”

Page 17: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 19

Declaración de Hoja de Estilo

El elemento raiz de la Hoja de Estilo debe tener al menos el atributo version=“x.y”

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0“ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml" version="1.0“ encoding="UTF-8" indent="yes"/>***

</xsl:stylesheet>

Page 18: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 20

Asociar una XSL a un XML

Insertar una instrucción de procesamiento:

<?xml version=“1.0”?>

<?xml-stylesheet type=“text/xsl” href=“myHoja.xsl”?>

El atributo type debe contener el valor fijo “text/xsl”. href debe contener la URL que localiza la hoja de estilo.

Page 19: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 21

XSLT: Elementos “Top-level”.

xsl:import

xsl:include

xsl:strip-space

xsl:preserve-space

xsl:output

xsl:key

xsl:decimal-format

xsl:namespace-alias

xsl:attribute-set

xsl:variable

xsl:param

xsl:template

El elemento <xsl:stylesheet> puede contener como hijos cualquiera de los siguientes elementos (top-level):

Page 20: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 22

Definición de <xsl:output><!-- Category: top-level-element --><xsl:outputmethod="xml" | "html" | "text" | qname-but-not-ncname version = nmtoken encoding = string omit-xml-declaration = "yes" | "no"standalone = "yes" | "no"doctype-public = string doctype-system = string cdata-section-elements = qnames indent = "yes" | "no"media-type = string />

Page 21: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 23

Templates (Plantillas)

Es el elemento más importante de la especificación XSL.

Especifica la transformación que se aplicará a una parte concreta del documento origen.

Un “template” seleccionado asocia una salida concreta con una entrada concreta.

Page 22: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 25

apply-templates

Para ir más allá de la raiz hay que dirigir al procesador en la búsqueda de elementos hijos del documento origen.

El uso de<xsl:apply-templates> indica dónde continuar recursivamente el proceso.

En dicho punto se aplicarán los templates apropiados según los hijos del elemento activo

Page 23: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 26

xsl:apply-templates

En general, este elemento es vacío e indica el punto de inserción de contenidos.

Cada nodo que cumple el patrón (match) es tratado como un árbol.

<xsl:template match=“Capítulo”>

<xsl:apply-templates/>

</xsl:template>

Page 24: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 27

Cómo funcionan los “templates”<?xml version=“1.0”?><?xml-stylesheet type=“text/xsl” href=“miEstilo.xsl”?><Documento>

<hijoA_1><hijoA_1-1> ... </hijoA_1-1> <hijoA_1-2> ... </hijoA_1-2> <hijoA_1-1> ... </hijoA_1-1>

</hijoA_1><hijoB_1> ... <hijoB_1>

</Documento>

Page 25: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 28

Cómo funcionan los “templates”<xsl:template match=“/”>

<html> <xsl:apply-templates/></html>

</xsl:template>

<xsl:template match=“Documento”>

<body><xsl:apply-templates/></body>

</xsl:template>

<xsl:template match=“hijoA_1”>

<h1>Esto es la salida<h1>

<xsl:apply-template>

</xsl:template>

<xsl:template match=“hijoA_1-1”>

<p>Elemento = HijoA_1.1</p>

</xsl:template>

Page 26: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 31

Cómo funcionan los “templates”

Resultado:<html>

<body><h1>Esto es la salida<h1><p>Elemento=HijoA_1.1</p><p>Elemento=HijoA_1.1</p>

</body></html>

Page 27: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 32

El atributo “select”

<xsl:apply-templates select=“xpath”/>

Restringe a un tipo de hijos (subárboles) la aplicación de la regla.

Page 28: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 33

xsl:value-of

<xsl:template match=“padre”>

<xsl:value-of select=“id_hijo”/>

<xsl:template/>

Copia el contenido del nodo seleccionado en la salida.

El valor de “id_hijo” es relativo al nodo fuente seleccionado en el template.

Page 29: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 34

Regla por defecto para texto

<xsl:template match=“text()”><xsl:value-of select=“.”/>

</xsl:template>Concuerda con todos los nodos-texto y copia sus contenidos a la salida.Asegura que como mímimo se imprime el texto de todos los elementos seleccionados.Se puede sobrecargar esta regla para modificar el comportamiento por defecto.

Page 30: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 35

Regla por defecto para elementos

Situación: no queremos procesar un elemento pero si algunos de sus hijos.

<xsl:template match=“*|/”>

<xsl:apply-templates/>

</xsl:template>

Asegura que todos los elementos serán procesados (visitados) recursivamente.

Page 31: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 36

Regla por defecto para elementos(ejemplo-1)

<libro>

<introducción>

<para> Esto es un párrafo</para>

<para> Otro párrafo</para>

</introducción>

</libro>

Page 32: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 37

Regla por defecto para elementos(ejemplo-2)

<template match=“libro”><apply-templates/>

</template>

<template match=“para”><apply-templates/>

</template>

<!– No hay template para “introducción” -->

Page 33: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 38

Modificar la regla por defecto

Ejemplo: Evitar que se procese ningún hijo de un

elemento que no tenga definido un template.

<template match=“*|/”>

<!– Nada -->

</template>

Page 34: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 39

Ocultar contenidos

<nota><para>...</para><para>...</para></nota>

<template match=“nota”></template>

Como consecuencia:

es necesaria una regla vacía para que no se procese un subárbol que depende de un elemento concreto.

Page 35: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 40

xsl:for-each

<xsl:for-each select=“”>

otras reglas XSL

</xsl:for-each>

Se aplica a colecciones de nodos.

Si no hay select, se aplica a todos los hijos del nodo actual.

Page 36: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 41

Manejo de tipos de nodos

Text()

Comment()

Pi()

Node()

Page 37: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 42

Manipulación de espacios en blanco

<xsl:preserve-space element=“nombre”/>

Indica el subárbol origen al cual hay que preservarle los espacios en blanco.

<xsl:strip-space element=“nombre”/>

Indica el subárbol origen al cual hay que eliminarle los espacios en blanco extra.

Page 38: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 43

Xsl:choose – xsl:when<xsl:template match=“capítulo/título”>

<xsl:choose><xsl:when test=“.[first-of-type()]”>

Primer capítulo:</xsl:when><xsl:otherwise>

Capítulo siguiente:</xsl:otherwise>

</xsl:choose></xsl:template>

Page 39: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 44

xsl: element- attribute - text

Insertan: un elemento, un atributo y un nodo hijo de tipo texto, respectivamente, en el árbol de salida.

<xsl:element name=“libro”>

<xsl:attribute name=“título”>El Quijote

</xsl:attribute>

<xsl:text>Este libro es famoso.</xsl:text>

</xsl:element>

<libro título=“El Quijote”>Este libro es famoso.</libro>

Page 40: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 45

Templates con nombreSe parece a la definición y llamada a subrutina:

<xsl:template name=“nombreTemplate”>

<xsl:param name=“parametro1”/>

<!– El código va aquí -->

</xsl:template>

<xsl:call-template name=“nombreTemplate”>

<xsl:with-param name=“parametro1” select=“valorParam”/>

</xsl:call-template>

Page 41: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 46

Variablesy función “document()”

Muy Importante: Una vez instanciadas NUNCA pueden cambiar de valor !!!

<xsl:variable name=“ficheroExt”

select=“document(“url”)/XPath”/>

...

<xsl:apply-templates select=“$ficheroExt/XPath”/>

Page 42: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 47

XPath

Lenguaje de expresiones de localización

Page 43: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 48

Expresiones XPath

Parten una gramática formal especificación).

Generan un lenguaje formal no-ambiguo.

Expresiones de localización con doble funcionalidad en las operaciones: “pattern matching” -> devuelven un booleano.Evaluación de expresiones -> devuelven un

conjunto de nodos.

Page 44: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 49

Expresiones de localización(1)

Seleccionan un conjunto de nodos del documento origen.Existe un punto absoluto de referencia para las localizaciones: “/”, la raiz del documento origen.Las expresiones que no comienzan con “/” son relativas a un nodo de contexto (normalmente el actual).

Page 45: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 50

Expresiones de localización(2)

El símbolo “/” a mitad de expresión sirve para incluir expresiones recursivamente (paso de localización), actuando como filtros sucesivos.

Un paso de localización se compone de:Una base:

Un eje de identificación (indicando dirección de localiz.).Un nodo de “test” (filtrando nodos de su tipo y nombre).

Uno o más predicados (filtrando nodos).

Page 46: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 51

Ejes de localización

ancestor::

ancestor-or-self::

attribute::

child::

descendant::

descendant-or-self::

following::

following-sibling::

namespace::

parent::

preceding::

preceding-sibling::

self::

Hay trece ejes de localización:

Page 47: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 52

Ejes XPath

p re ce d ing

p re ce d ingp re ced in g -s ib ling

d e scen da nt

d e scen da ntch ild

d e scen da ntch ild

d e scen da nt

d e scen da ntch ild

S E LF fo llo w ingfo llo w ing -s ib ling

a n ces to rp a re n t

fo llo w ing

A n ces to r

Page 48: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 53

Ejes de localización:abreviaturas

Un nombre o tipo de nodo indica child::

Un carácter ‘@’ indica attribute::

La secuencia “//” indica/descendant-or-self::node()/

La secuencia “..” indica parent::node()

La secuencia “.” indica self::node()

Page 49: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 54

Nodos de “test”

Determinan que nodos localizar en el eje indicado:Por nombre del nodo.Por tipo de nodo.Por valor de atributo.

Page 50: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 55

Predicados

Qualificadores opcionales de listas de nodos (la lista ordenada de nodos en un eje).

El orden es en función de la proximidad al nodo actual.

La concatenación de predicados se evalúa: de izda. a dcha. Contra todos los nodos del contexto. reduce la lista de nodos seleccionados, cambiando la

posición (contexto) de la expresión XPath.

Page 51: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 56

Ejemplos de expresiones y contextos

Self::nomNodo , Indica el nodo actual si se llama “nomNodo”, si no da

lista_vacía.

nomNodo , ./nomNodo , child::nomNodo , Conjunto de elementos-hijo del nodo actual que se llamen

“nomNodo”.

.//nomNodo , Elementos decendientes del actual (nombre=“nomNodo”).

//nomNodo , Elementos decendientes del raiz (nombre=“nomNodo”).

Page 52: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 57

Ejemplos de expresiones y contextos

../nomNodo , Elementos “hermano” (y él mismo) = “nomNodo”.

@atrib , Nodos atributos asociados con nombre=“atrib”.

../@atrib , Los nodos atributo del nodo-padre con nombre=“atrib”.

../nomNodo/@atrib , Atributos “atrib” de los elementos-hermano=“nomNodo”.

nomNodo/@atrib , Atributos “atrib” de los elementos-hijo=“nomNodo”.

Page 53: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 58

Ejemplos de expresiones y contextos

nomNodo[position()=last()] , El último elemento-hijo=“nomNodo”.

nomNodo[position()=3] , nomNodo[3] , El tercer elemento-hijo=“nomNodo”.

nomNodo[@atrib][3] , El tercer elemento-hijo=“nomNodo” que tiene un

atributo=“atrib”.

nomNodo[3][@atrib] , El tercer elemento-hijo=“nomNodo” SI tiene un atributo

asociado=“atrib”, en caso negtivo da lista-vacía.

Page 54: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 59

Ejemplos de expresiones y contextos

ancestor::nomNodo , Conjunto de nodos antecesores=“nomNodo”.

ancestor::nomNodo[1] , El nodo antecesor más próximo=“nomNodo”.

ancestor::nomNodo[@atrib][1] , El nodo antecesor más próximo=“nomNodo” y

atributo=“atrib”.

ancestor::[1][@atrib] , El nodo antecesor más próximo=“nomNodo” SII tiene un

atributo=“atrib”, si-no : lista vacía.

Page 55: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 60

Ejemplos de expresiones y contextos

ancestor::nomNodo/@atrib , Selecciona los atributos=“atrib” de todos los elementos-

antecesores=“nomNodo”.

ancestor::nomNodo[@atrib][1]/@atrib , El atributo=“atrib” del elemento-antecedente=“nomNodo”

más próximo.

id(@ref)/@atrib , El atributo=“atrib” del elemento que devuelve la función id()

con parámetro el valor del atributo “ref” del elemento actual.

Page 56: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 61

Dirección de procesamiento de los Ejes

Los predicados se orientan por proximidad al nodo actual:Aplicados a antecesores actúan sobre conjuntos

ordenados en forma inversa al orden del documento.

Aplicados a sucesores actúan sobre conjuntos ordenados en el mismo orden del documento.

Los conjuntos resultado que se procesen como colección, se hará en el orden del documento.

Page 57: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 62

Dirección de procesamiento de ejes (ejemplo)

Documento XML origen de transformación:

<?xml version=“1.0”?>

<conjunto>

<item>A</item>

<item>B</item>

<item>C</item>

</conjunto>

Page 58: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 63

Ejemplo (cont.)Hoja de estilo XSL:

<xsl:template match”/”><xsl:for-each select=“//item[last()]”>

<xsl:text>preceding-sibling::item[1]:</xsl:text><xsl:value-of select=“preceding-sibling::item[1]”/><xsl:text>&nl;(preceding-sibling::item)[1]:</xsl:text><xsl:value-of select=“(preceding-sibling::item)[1]”/><xsl:text>for-each preceding-sibling::item:</xsl:text><xsl:for-each select=”preceding-sibling::item/text()”><xsl:text>&nl; Item:</xsl:text><xsl:value-of select=“.”/></xsl:for-each></xsl:for-each></xsl:template>

Page 59: Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML

Pedro Pastor (Universitat d'Alacant)

Curso XSL 64

Ejemplo: resultado

preceding-sibling::item[1]: B

(preceding-sibling::item[1]: A

for-each “proceding-sibling::item”: Item: A Item: B