La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Pedro Pastor (Universitat d'Alacant)Curso XSL1 Curso de XSL Sistema para la visualización de documentos XML."— Transcripción de la presentación:

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

2 Pedro Pastor (Universitat d'Alacant)Curso XSL2 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.

3 Pedro Pastor (Universitat d'Alacant)Curso XSL3 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.

4 Pedro Pastor (Universitat d'Alacant)Curso XSL4 ¿ Por que transformar XML ? Conversión entre modelos de datos Aunque 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.

5 Pedro Pastor (Universitat d'Alacant)Curso XSL5 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.

6 Pedro Pastor (Universitat d'Alacant)Curso XSL6 Proceso de publicación XML- XSL. Doc. XML original HTML, PDF,... Procesador de XSLT XSLT Nueva Estructura XML + FO Nueva Estructura XML + FO Nueva Estructura XML + FO Procesador De XSLFO

7 Pedro Pastor (Universitat d'Alacant)Curso XSL7 Cómo se realiza la transformación (1)

8 Pedro Pastor (Universitat d'Alacant)Curso XSL8 Cómo se realiza la transformación(2)

9 Pedro Pastor (Universitat d'Alacant)Curso XSL9 Cómo se realiza la transformación(3)

10 Pedro Pastor (Universitat d'Alacant)Curso XSL10 Lo que ve el procesador La raiz del documento. Elementos. Texto. Atributos. Espacios de nombres (Namespaces). Instrucciones de procesamiento (PI). Comentarios.

11 Pedro Pastor (Universitat d'Alacant)Curso XSL11 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).

12 Pedro Pastor (Universitat d'Alacant)Curso XSL12 Procesamiento XSLT-Servidor XML Procesador XSLT XML XSL_FO HTML Navegador Web Visor de FO Fuente de contenidos

13 Pedro Pastor (Universitat d'Alacant)Curso XSL13 Procesamiento XSLT-Cliente XML Procesador XSLT IMAGEN HTML Navegador Web Visor de FO Fuente de contenidos

14 Pedro Pastor (Universitat d'Alacant)Curso XSL14 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.

15 Pedro Pastor (Universitat d'Alacant)Curso XSL15 Comparación XSLT - SQL XML: modelo de datos jerárquico (más rico que el relacional). Lenguaje de acceso a los datos: XSLT. Selección declarativa de los datos: XPath. XSLT manipula el resultado de la selección Modelo relacional: modelo de datos tabular. Lenguaje de query: SQL. Selección declarativa de los datos: SELECT.

16 Pedro Pastor (Universitat d'Alacant)Curso XSL16 Comparación XSLT - SQL Ambos aportan funciones adicionales para las queries: aritméticas, manejo de cadenas, operadores de comparación, etc. Ambos complementan la sintaxis declarativa con construcciones procedimentales que ayudan a la descripción de secuencias. Ambos son cerrados respecto del modelo de datos.

17 Pedro Pastor (Universitat d'Alacant)Curso XSL17 ¿ 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.

18 Pedro Pastor (Universitat d'Alacant)Curso XSL18 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:... Todos los elementos de XSL que son instrucciones pertenecen al espacio de nombres: xmlns:xsl=http://www.w3.org/XSL/Transform/1.0

19 Pedro Pastor (Universitat d'Alacant)Curso XSL19 Declaración de Hoja de Estilo El elemento raiz de la Hoja de Estilo debe tener al menos el atributo version=x.y *

20 Pedro Pastor (Universitat d'Alacant)Curso XSL20 Asociar una XSL a un XML Insertar una instrucción de procesamiento: El atributo type debe contener el valor fijo text/xsl. href debe contener la URL que localiza la hoja de estilo.

21 Pedro Pastor (Universitat d'Alacant)Curso XSL21 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 puede contener como hijos cualquiera de los siguientes elementos (top-level):

22 Pedro Pastor (Universitat d'Alacant)Curso XSL22 Definición de <xsl:output method="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 />

23 Pedro Pastor (Universitat d'Alacant)Curso XSL23 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. Cada hoja de estilo debe tener al menos un template. Un template seleccionado asocia una salida concreta con una entrada concreta.

24 Pedro Pastor (Universitat d'Alacant)Curso XSL24 Plantillas XSL Plantilla a aplicar (acción). Dispara una acción ante el patrón de búsqueda xpath. Una expresión XPath: lenguaje de query para localizar elementos en una estructura XML (~lenguaje regular de árboles).

25 Pedro Pastor (Universitat d'Alacant)Curso XSL25 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 indica dónde continuar recursivamente el proceso. En dicho punto se aplicarán los templates apropiados según los hijos del elemento activo

26 Pedro Pastor (Universitat d'Alacant)Curso XSL26 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.

27 Pedro Pastor (Universitat d'Alacant)Curso XSL27 Cómo funcionan los templates......

28 Pedro Pastor (Universitat d'Alacant)Curso XSL28 Cómo funcionan los templates

29 Pedro Pastor (Universitat d'Alacant)Curso XSL29 Cómo funcionan los templates Esto es la salida Elemento = HijoA_1.1

30 Pedro Pastor (Universitat d'Alacant)Curso XSL30 Cómo funcionan los templates 1. La raiz del documento XML se compara con todos los patrones y casa con /. 2. Se imprime la marca:. 3. La instrucción induce el procesamiento de los hijos de la raiz. El primer hijo es una PI: : no casa con nada => no es procesado.

31 Pedro Pastor (Universitat d'Alacant)Curso XSL31 Cómo funcionan los templates El segundo hijo casa con la segunda regla: se imprime la marca. Se siguen aplicando reglas recursivamente gracias a que esta regla contiene la instrucción: El hilo de ejecución sigue con los hijos del elemento actual (nodo_contexto):

32 Pedro Pastor (Universitat d'Alacant)Curso XSL32 Cómo funcionan los templates Resultado: Esto es la salida Elemento=HijoA_1.1

33 Pedro Pastor (Universitat d'Alacant)Curso XSL33 El atributo select Restringe a un tipo de hijos (subárboles) la aplicación de la regla.

34 Pedro Pastor (Universitat d'Alacant)Curso XSL34 xsl:value-of Copia el contenido del nodo seleccionado en la salida. El valor de id_hijo es relativo al nodo fuente seleccionado en el template.

35 Pedro Pastor (Universitat d'Alacant)Curso XSL35 Regla por defecto para texto 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.

36 Pedro Pastor (Universitat d'Alacant)Curso XSL36 Regla por defecto para elementos Situación: no queremos procesar un elemento pero si algunos de sus hijos. Asegura que todos los elementos serán procesados (visitados) recursivamente.

37 Pedro Pastor (Universitat d'Alacant)Curso XSL37 Regla por defecto para elementos (ejemplo-1) Esto es un párrafo Otro párrafo

38 Pedro Pastor (Universitat d'Alacant)Curso XSL38 Regla por defecto para elementos (ejemplo-2)

39 Pedro Pastor (Universitat d'Alacant)Curso XSL39 Modificar la regla por defecto Ejemplo: Evitar que se procese ningún hijo de un elemento que no tenga definido un template.

40 Pedro Pastor (Universitat d'Alacant)Curso XSL40 Ocultar contenidos...... Como consecuencia: es necesaria una regla vacía para que no se procese un subárbol que depende de un elemento concreto.

41 Pedro Pastor (Universitat d'Alacant)Curso XSL41 xsl:for-each otras reglas XSL Se aplica a colecciones de nodos. Si no hay select, se aplica a todos los hijos del nodo actual.

42 Pedro Pastor (Universitat d'Alacant)Curso XSL42 Manejo de tipos de nodos Text() Comment() Pi() Node()

43 Pedro Pastor (Universitat d'Alacant)Curso XSL43 Manipulación de espacios en blanco Indica el subárbol origen al cual hay que preservarle los espacios en blanco. Indica el subárbol origen al cual hay que preservarle los espacios en blanco.

44 Pedro Pastor (Universitat d'Alacant)Curso XSL44 Xsl:choose – xsl:when Primer capítulo: Capítulo siguiente:

45 Pedro Pastor (Universitat d'Alacant)Curso XSL45 xsl: element- attribute - text Insertan: un elemento, un atributo y un nodo hijo de tipo texto, respectivamente, en el árbol de salida. El Quijote Este libro es famoso. Este libro es famoso.

46 Pedro Pastor (Universitat d'Alacant)Curso XSL46 Templates con nombre Se parece a la definición y llamada a subrutina:

47 Pedro Pastor (Universitat d'Alacant)Curso XSL47 Variables y función document() Muy Importante: Una vez instanciadas NUNCA pueden cambiar de valor !!! <xsl:variable name=ficheroExt select=document(url)/XPath/>...

48 Pedro Pastor (Universitat d'Alacant)Curso XSL48 XPath Lenguaje de expresiones de localización

49 Pedro Pastor (Universitat d'Alacant)Curso XSL49 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.

50 Pedro Pastor (Universitat d'Alacant)Curso XSL50 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).

51 Pedro Pastor (Universitat d'Alacant)Curso XSL51 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).

52 Pedro Pastor (Universitat d'Alacant)Curso XSL52 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:

53 Pedro Pastor (Universitat d'Alacant)Curso XSL53 Ejes XPath

54 Pedro Pastor (Universitat d'Alacant)Curso XSL54 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()

55 Pedro Pastor (Universitat d'Alacant)Curso XSL55 Nodos de test Determinan que nodos localizar en el eje indicado: Por nombre del nodo. Por tipo de nodo. Por valor de atributo.

56 Pedro Pastor (Universitat d'Alacant)Curso XSL56 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.

57 Pedro Pastor (Universitat d'Alacant)Curso XSL57 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 llamennomNodo..//nomNodo, Elementos decendientes del actual (nombre=nomNodo). //nomNodo, Elementos decendientes del raiz (nombre=nomNodo).

58 Pedro Pastor (Universitat d'Alacant)Curso XSL58 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.

59 Pedro Pastor (Universitat d'Alacant)Curso XSL59 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.

60 Pedro Pastor (Universitat d'Alacant)Curso XSL60 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.

61 Pedro Pastor (Universitat d'Alacant)Curso XSL61 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.

62 Pedro Pastor (Universitat d'Alacant)Curso XSL62 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.

63 Pedro Pastor (Universitat d'Alacant)Curso XSL63 Dirección de procesamiento de ejes (ejemplo) Documento XML origen de transformación: A B C

64 Pedro Pastor (Universitat d'Alacant)Curso XSL64 Ejemplo (cont.) Hoja de estilo XSL: preceding-sibling::item[1]: &nl;(preceding-sibling::item)[1]: for-each preceding-sibling::item: &nl; Item:

65 Pedro Pastor (Universitat d'Alacant)Curso XSL65 Ejemplo: resultado preceding-sibling::item[1]: B (preceding-sibling::item[1]: A for-each proceding-sibling::item: Item: A Item: B


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

Presentaciones similares


Anuncios Google