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

Embed Size (px)

Text of XML 2: XSLT, XPath Kostadin Koroutchev. XSL Transform XSL consiste de 2 partes: XSL Transform (XSLT)...

  • XML 2: XSLT, XPathKostadin Koroutchev

  • XSL TransformXSL consiste de 2 partes: XSL Transform (XSLT)XSL Format Object (fo). Buenos para impresin. No muy buenos para pantalla (vamos a utilizar CSS en las prcticas)XMLTUso transformacin de XML a XMLUn tipo particular de XML XHTMLXHTML muy parecido a HTML, pero XMLLos browsers lo aceptanPrcticamente la misma funcionalidad que HTML 4.01.

  • XSLT Q&AQu es?Un lenguaje de programacinDe qu sirve?De transformar el rbol de un fichero XML a otro formato.Mas frecuente a otro fichero XML. Dnde esta definido?http:www.w3.org/TR/Libros de texto:La definicinXML in a nutshellXML BibleManera mas fcil de dominarlo programando.Programas:Xsltproc, Netscape 6.0, IE 5.5+Ejemplos? Ver el soporte, ejemplo ??2*.*.

  • Proceso:El fichero, por ejemplo xx21.xml contiene instrucciones de procesamiento: Existe fichero con estilos xx21.xslEste fichero (formato xml) incluye las instrucciones de procesar el fichero xml.Salida: fichero o vistaBrowser/procesar xslxx21.xmlxx21.xsl

  • XSLT Ejemplo entradaXSL pp21.xsl XML pp21.xml

    Flavor:

    jazz L. Ams EMI +

    Resultado: Flavor: jazz

    Elemento root - stylesheet. Elemento Hay 2 tipos de xsl tags Namespace, version template mapea su match=. Todo el texto no se copia.

  • XSLT Ejemplo entradaTres tipos de marcos xsl:Cabecera (raz).Los hijos de stylesheet Tipo template.Programacin declarativa.Existen valores por defecto.Los hijos de estos hijos (recursivo). Tipo for-each, value-ofSe parecen a programacin funcionalElementos que apuntan al rbol:/cd-s/cd, flavor

    Flavor:

    Ejemplos en el soporte xx2*

  • 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/entradaoutput salida literal opciones de salida.key a xsl ID (uso no muy frecuente)attribute-set, param, variable name=...>...valor... conjunto nombrado de identificadores.template el ms importante elemento de XSLEjecuta todo que mapea.

  • XSLT template 1 ..zzz... Si /cd-s/cd se encuentra en la entrada se produce enparejamiento y se ejecuta el cdigo ..zzz.. .El rbol-salida se construye al ejecutar ..zzz...Atributos: match el patrn de emparejamiento.name= nombre del template. Puede llamarse con este nombre.mode= clase de template.

  • XSLT template 2Ejemplo con ms de un template

    Flavor:

    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.

  • XSLT default templateTemplate:Existen por defecto 2 templates:

  • XSLT elements instruccionesLas instrucciones son de tipo:apply-templates, call-templatesEjecuta templatesif, for-each, choose, when, otherwise control de flujo de ejecucinvalue-of, copy-of valor de un elemento.Etc.

  • XPathLas expresiones match= en template son un ejemplo de Xpath.XPath esMecanismo de direccionar el rbol xml.Conjunto de funciones y expresiones.

  • 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 posicin actual en el rbol. La posicin 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 aadir [...] en cualquier punto de la ruta con condicin buleana o numeroNumero (o expresin numrica)/cd-s/cd[2] el segundo cd de los cd-s.Condicin buleana:/cd-s/cd[@duration
  • Xpath funcionesQue direccionan algo del rbol

    Xpath Significado.Contenido textual del nodo y sus hijos.text()C-data pero solo de un nivel.node()Todo en el nodoname()Nombre del elemento (tag)@duracionAtributo de un nodocomment()Comentariosprocessing-instrucciones()PI

  • Xpath funcionesDe posicin

    Numricas:number(c-data), sum().Lgicas: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);

    Xpath Significadoposition()Nmero de hijo. 1- primer hijo.[position()=2] es lo mismo como [2]last()Nmero de ultimo hijo

  • Xpath expresionesOperadores:* div mod + - = != < > = and or |Variables con $.

  • Xpath atributosComo generar:

    Solucin generarlo por partes:

    Resultado (ejemplo): El texto de la tabla

  • XSLT Como aprenderloComo cualquier lenguaje de programacin 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+instruccionesxx22.* -- fo: + xsl:xx23.* -- Xpathxx24.* -- Cascade Style Sheet Referencia rpida (chuletas):http://www.mulberrytech.com/

  • Representacin grfica de rboles.Cascade Style Sheet (CSS)Un rbol se puede presentar en 2 dimensiones:todop1p2p22p3todop1p2p22p3Cada nodo tiene borde comn solo con su padre.Cada padre encaja en su totalidad sus hijosEjemplo XHTML Idea de Xerox 1968XML es un rbol CSS nos da la manera de ordenar los nodos.

  • Representacin grafica de rboles.Cascade Style Sheet (CSS)CSS solo resuelve el problema de poner las casitas de representacin 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 Amstrong EMIOn the sunny side of the street Chick to chick On the Sunny Side of the Street Elementos_del_rbol : { descripcin_del_formato } CSS representa el rbol por una parte y el formato por otra Cascada por heredar los atributos de formateo del padre.

  • CSS Elemento principalEl elemento de formateo es el elemento XML.Hay que presentarlo: en caja rectangular la cajita tiene:

    Por tanto los atributos son del tipo composer {border-color:red;margin-left:5mm;}Hay que direccionar el elemento en el rbol con el nombre del elemento. Contenido Padding Border Margin Position

  • CSS displayDonde se coloca el siguiente elemento:Segn el lenguaje el orden natural de lectura de texto.Castellano: Japones

    El orden por defecto se puede cambiar: atributo display display: inline /* por defecto */ display: block /* en la siguiente lnea */ display: list /* tem de una lista */ display: table /* tabla rectangular mas control, ms complicado */ display: none /* no se presenta */

  • CSS grupos de elementosVer la referencia rpida de los atributos ms utilizados.Grupos de formateo:Bloques (border, color, width,backgroung, margin,...)Control desbordamiento etc.Fuentes (style, size, ...)Texto (alineacin, decoracin,word-spacing,letter-spacing)L ink (hover, active, focus, visited)Ms de 300 paginas de definicin de CSS2.Ver http://genuera.ugr.es/~maribel/xml/css/index.htmlVer http://www.w3.org/TR/REC-CSS2/Mas en la segunda prctica.