1 / 23

XML 2: XSLT, XPath

XML 2: XSLT, XPath. Kostadin Koroutchev. XSL Transform. XSL consiste de 2 partes: XSL Transform (XSLT) XSL Format Object (fo). Buenos para impresión. No muy buenos para pantalla (vamos a utilizar CSS en las prácticas) XMLT Uso – transformación de XML a XML

keenan
Download Presentation

XML 2: XSLT, XPath

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML 2: XSLT, XPath Kostadin Koroutchev

  2. XSL Transform • XSL consiste de 2 partes: • XSL Transform (XSLT) • XSL Format Object (fo). Buenos para impresión. No muy buenos para pantalla (vamos a utilizar CSS en las prácticas) • XMLT • Uso – transformación de XML a XML • Un tipo particular de XML – XHTML • XHTML – muy parecido a HTML, pero XML • Los browsers lo aceptan • Prácticamente la misma funcionalidad que HTML 4.01.

  3. XSLT Q&A • ¿Qué es? • Un lenguaje de programación • ¿De qué sirve? • De transformar el árbol de un fichero XML a otro formato. • Mas frecuente – a otro fichero XML. • ¿Dónde esta definido? • http:www.w3.org/TR/ • Libros de texto: • La definición • XML in a nutshell • XML Bible • Manera mas fácil de dominarlo – programando. • Programas: • Xsltproc, Netscape 6.0, IE 5.5+ • ¿Ejemplos? Ver el soporte, ejemplo ??2*.*.

  4. Proceso: • El fichero, por ejemplo xx21.xml contiene instrucciones de procesamiento:<?xml-stylesheet type="text/xsl" href="xx21.xsl" ?> • Existe fichero con estilosxx21.xsl • Este fichero (formato xml) incluye las instrucciones de procesar el fichero xml. xx21.xsl Salida:fichero o vista xx21.xml Browser/ procesar xsl

  5. XSLT Ejemplo entrada <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/cd-s/cd"> <html><body><p> <xsl:for-each select="flavor"> Flavor: <xsl:value-ofselect="." /> </xsl:for-each> </p></body></html> </xsl:template> </xsl:stylesheet> <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="pp21.xsl" ?> <cd-s> <cd duration="2134"> <flavor>jazz</flavor> <performer>L. Ams</performer> <producer>EMI</producer> +<contents> </cd> </cd-s> XSL pp21.xsl XML pp21.xml Resultado: <html><body><p> Flavor: jazz </p></body></html> • Elemento root - stylesheet. • Elemento Hay 2 tipos de xsl tags • Namespace, version • template mapea su match=. • Todo el texto no <xsl:...> se copia.

  6. XSLT Ejemplo entrada • Tres tipos de marcos xsl: • Cabecera (raíz). • Los hijos de stylesheet Tipo template. • Programación declarativa. • Existen valores por defecto. • Los hijos de estos hijos (recursivo).Tipo for-each, value-of • Se parecen a programación funcional • Elementos que apuntan al árbol: • /cd-s/cd, flavor <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/cd-s/cd"> <html><body><p> <xsl:for-each select="flavor"> Flavor: <xsl:value-ofselect="." /> </xsl:for-each> </p></body></html> </xsl:template> </xsl:stylesheet> Ejemplos en el soporte – xx2*

  7. XSLT Top-level element • Top-level = 12 posibles elementos hijos de stylesheet: • import, include URL – incluir ficheros. • strip-space, preserve-space elements – tratar espacios. • decimal-format, namespace-alias – control de la salida/entrada • output – salida “literal” opciones de salida. • key – a xsl ID (uso no muy frecuente) • attribute-set, param, variable name=...>...valor...</xsl:varalable> conjunto nombrado de identificadores. • template – el más importante elemento de XSL • Ejecuta todo que mapea.

  8. XSLT template 1 • <xsl:template match=“/cd-s/cd”> ..zzz...</xsl:template> • Si /cd-s/cd se encuentra en la entrada se produce enparejamiento y se ejecuta el código ..zzz.. . • El árbol-salida se construye al ejecutar ..zzz... • Atributos: • match – el patrón de emparejamiento. • name= nombre del template. Puede llamarse con este nombre. • mode= clase de template.

  9. XSLT template 2 • Ejemplo con más de un template • Manera habitual de programar con XSLT. • Nunca hay que olvidar el xsl:template por defecto. • xsl:apply-templates aplica los templates dentro de otro template de forma recursiva sobre los elementos del nodo actual. • xsl:value-of escribe el elemento seleccionado a la salida. <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform” version="1.0"> <xsl:template match="/"> <html><body> <xsl:apply-templatesselect="cd-s/cd" /> </body></html> </xsl:template> <xsl:template match="*"> <xsl:apply-templatesselect="flavor" /> </xsl:template> <xsl:template match="flavor"> <p>Flavor:<xsl:value-ofselect="." /></p> </xsl:template> </xsl:stylesheet>

  10. XSLT default template • Template: • Existen por defecto 2 templates: • <xsl:template match=“*|/”> <xsl:apply-templates/></xsl:template> • </xsl:telmplate match=“comment()|processing-instructions()”/>

  11. XSLT elements – instrucciones • Las instrucciones son de tipo: • apply-templates, call-templates • Ejecuta templates • if, for-each, choose, when, otherwise – control de flujo de ejecución • value-of, copy-of – valor de un elemento. • Etc.

  12. XPath • Las expresiones match= en template son un ejemplo de Xpath. • XPath es • Mecanismo de direccionar el árbol xml. • Conjunto de funciones y expresiones.

  13. XPath como mecanismo de direccionar árboles. • Muy parecido a UNIX: • /cd-s/cd/flavor direcciona el elemento flavor que es el hijo de cd que se el hijo del nodo cd-s, el elemento root (la / inicial). • XSLT siempre direcciona relativamente de la posición actual en el árbol. La posición se denomina “.” • El padre: .., el padre del padre “./..” etc. como en UNIX. • Los atributos se marcan con @. Ver el soporte, ejemplo xx22.xml. En XPath // significa cualquier hijo. • Otros: podemos añadir [...] en cualquier punto de la ruta con condición buleana o numero • Numero (o expresión numérica) • /cd-s/cd[2] – el segundo cd de los cd-s. • Condición buleana: • /cd-s/cd[@duration<100]/flavor, direcciona flavor solo de discos con duración menor que 100. • /cd-s/cd[position()=last()] – el ultimo de los cd-s.

  14. Xpath funciones • Que direccionan algo del árbol

  15. Xpath funciones • De posición • Numéricas: • number(c-data), sum(). • Lógicas: • true(), false(), not(), boolean(c-data|numeric) • Cadenas de caracteres: • string(), string-length(), concat(), contains(), • starts-with(),substring(),substring-after(),substring-before(), translate() • Ejemplo: translate(‘John','abcd...z',‘ABC...Z‘);

  16. Xpath expresiones • Operadores: • * div mod + - • = != < > <= >= • and or | • Variables – con $.

  17. Xpath atributos • Como generar: • Solución – generarlo por partes: • Resultado(ejemplo): <table bgcolor=“ <xsl:value-of select=“color-de-xml””> El texto de la tabla </table> <xsl:element name=“table”> <xsl:attribute name=“bgcolor” > <xsl:value-of select=“color-de-xml” > </xsl:attribute> El texto de la tabla </xsl:element> <table bgcolor=“#ff0000”> El texto de la tabla </table>

  18. XSLT Como aprenderlo • Como cualquier lenguaje de programación – programando. • No hemos mencionado bastante cosas útiles de Xpath y XSLT. • Ejemplos: • pp21.* -- sacar 1 campo de los apuntes. • pp22.* -- sacar 1 campo con templates. • xx21.* -- template+instrucciones • xx22.* -- fo: + xsl: • xx23.* -- Xpath • xx24.* -- Cascade Style Sheet • Referencia rápida (chuletas): • http://www.mulberrytech.com/

  19. Representación gráfica de árboles.Cascade Style Sheet (CSS) • Un árbol se puede presentar en 2 dimensiones: • Cada nodo tieneborde comúnsolo con su padre. • Cada padre encaja en su totalidadsus hijos todo todo p1 p2 p1 p22 p3 p2 p22 Ejemplo – XHTML p3 Idea de Xerox 1968 XML es un árbol – CSS nos da la manera de ordenar los nodos.

  20. todo p1 p2 p22 p3 Representación grafica de árboles.Cascade Style Sheet (CSS) • CSS solo resuelve el problema de poner las casitas de representación es su sitio. xx24.* • Ejemplo CSS: flavor { display:inline;t ext-align left; font-size:24pt; color:blue} performer {color:red} performer:before {content:"Performer: "} contents {display:block} song { margin-left:1cm; display:list-item; list-style-type:diamond; list-style-position:inside } contents song[type="good"] title {color:maroon;} • jazz Luis AmstrongEMI • On the sunny side of the street • Chick to chick • On the Sunny Side of the Street • Elementos_del_árbol : { descripción_del_formato } • CSS representa el árbol por una parte y el formato por otra • Cascada – por heredar los atributos de formateo del padre.

  21. CSS Elemento principal • El elemento de formateo es el elemento XML. • Hay que presentarlo: en caja rectangular la cajita tiene: • Por tanto los atributos son del tipocomposer {border-color:red;margin-left:5mm;} • Hay que direccionar el elemento en el árbolcon el nombre del elemento. • Contenido • Padding • Border • Margin • Position

  22. CSS display • Donde se coloca el siguiente elemento: • Según el lenguaje – el orden natural de lectura de texto. • Castellano: Japones • El orden por defecto se puede cambiar: atributo – displaydisplay: inline /* por defecto */display: block /* en la siguiente línea */display: list /* ítem de una lista */display: table /* tabla rectangular mas control, más complicado */display: none /* no se presenta */

  23. CSS grupos de elementos • Ver la referencia rápida de los atributos más utilizados. • Grupos de formateo: • Bloques (border, color, width,backgroung, margin,...) • Control desbordamiento etc. • Fuentes (style, size, ...) • Texto (alineación, decoración,word-spacing,letter-spacing) • L ink (hover, active, focus, visited) • Más de 300 paginas de definición de CSS2. • Ver http://genuera.ugr.es/~maribel/xml/css/index.html • Ver http://www.w3.org/TR/REC-CSS2/ • Mas – en la segunda práctica.

More Related