XSL. Introducción. Introducción. Introducción



Documentos relacionados
Transformación de documentos XML con

Transformación de documentos : XSLT

XSL: extensible Style Language. Anabel Fraga

Tema IV. XML. VI. XSL (XPath & XSLT) Desarrollo de Aplicaciones para Internet Curso 12 13

M. Carmen Fernández Panadero

5.1 Introducción a XSL

XML y XQuery. Qué es XML? Qué es XML? (II) Ejemplo de fichero XML. Cuerpo de un documento XML. Estructura de un documento XML

Bases de Datos XPath - XQuery 1. XML: XPath - XQuery. Jorge Pérez Rojas Universidad de Talca, II Semestre 2006

[CONVERSIÓN Y ADAPTACIÓN DE DOCUMENTOS XML]

Introducción a XSLT. Jose Emilio Labra Gayo. Octubre Contenidos Plantillas Programación Automatización Múltiples documentos

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 7

Sistemas de Información 12/13 XML (extensible Mark-up Language)

Depto de Cs e Ing. de la Computación Universidad Nacional del Sur

Capítulo 3: XML Spy como editor de documentos XML. 2. La interfaz de usuario de XML Spy

extensible Markup Language (XML)

Capítulo 1 Documentos HTML5

XPath en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

EXTENSIÓN DE UML PARA APLICACIONES WEB

Transformación documentos XML. Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML

Visualización y Transformaciones en XML

Práctica de introducción a

Primeros pasos con XML y XSL Ricardo Borillo Domenech

Fundamentos de las tecnologías de la información

Ejercicios del bloque de Web de Sistemas de Información:

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Definición de XQuery.

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web.

Modulo 1 El lenguaje Java

Centro de Capacitación en Informática

Análisis de esquemas XML [1]

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008

Tabla de Contenidos. xii

Desarrollo de software para navegación web desde terminales celulares de 3ª generación

TIPOS DE VARIABLES EN PHP. DECLARACIÓN Y ASIGNACIÓN. LA INSTRUCCIÓN ECHO PARA INSERTAR TEXTO O CÓDIGO. (CU00816B)

Creación de documentos XML

1 Introducción a XML

Microsoft Access 2007 (Completo)

2 Estructura de un Documento XML

EJERCICIO 3: DOCUMENTO MAESTRO

Requisitos para la generación de Xml válido

El proceso de edición digital en Artelope y CTCE

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Instructivo de Microsoft Excel 2003

Práctica 4 Manejo avanzado de Bison

Tema 3.1: Principios de diseño web accesibles

APLICACIONES PARA INTERNET

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

La ventana de Microsoft Excel

CAPAS O CONTENEDORES EN HTML. ETIQUETAS DIV Y SPAN. EJEMPLOS. MAQUETAR O DAR ESTRUCTURA A LAS PÁGINAS WEB. (CU00726B)

LAS BARRAS. La barra de acceso rápido

DISEÑO ORGANIZACIONAL. Diseño web avanzado con HTML5 y CSS5

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Estructuras de Datos y Algoritmos. Árboles de Expresión

TEMA 35: Estándares SGML y XML. Entornos de aplicación.

TEMA 3. CLASES. EJERCICIOS

Introducción a XML. Simon Pickin Ingeniería Telemática. Basado en una presentación de M. Carmen Fernández Panadero <mcfp@it.uc3m.

XML para FP : Introducción

EDICIÓN Y FORMATO (II)

CLASS JAVASCRIPT CLASES? OBJETOS PREDEFINIDOS. WINDOW, OBJETO GLOBAL. NUMBER, MATH, DATE, REGEXP, ERROR. (CU01144E)

Centro de Capacitación en Informática

Índice. Programación en Internet Curso Introducción El DOM en PHP. Programación en Internet DLSI - Universidad de Alicante 1

XML: extensible Markup Language (Parte I) Ingeniería de la Información

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

MANUAL DE USUARIO DEL SISTEMA PARA EL REDACTOR

Patrones para persistencia (I) Ingeniería del Software II

Operación de Microsoft Word

IIC Tópicos Avanzados en Bases de Datos Extracción de Información en XML

MATERIAL 2 EXCEL 2007

Introducción a XML - Validación y Parseo. Huibert Aalbers, Senior Certified Software IT Architect

Funciones en Excel (II)

Hoja1!C4. Hoja1!$C$4. Fila

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, Madrid

Ficheros Electrónicos

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Capítulo 6. ÁRBOLES.

XML Schema. Sergio Luján Mora.

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

InfoPath forma parte del paquete ofimático de Microsoft desde la versión XP (2003).

OBTENER DATOS EXTERNOS

Validación de un XML

Plantilla de texto plano

GUÍA PARA PUBLICACIÓN DE CONTENIDO

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Introducción a Visual Studio.Net

PASOS PARA CREAR UNA PÁGINA WEB

XML-Schema. XML-Schema. Espacios de Nombre. W3C XML Schema intenta superar las limitaciones de las DTDs con respecto a ellos

INYECCIóN DE CóDIGO EN APLICACIONES PHP. Autor: Iñaki Rodriguez (2005)

Elementos de Microsoft Word

Diseño de páginas web 2011

Instalación del programa PSPP y obtención de una distribución de frecuencias.

Manual de OpenOffice Impress

MICROSOFT ACCESS 2010

Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2

Comercial Cartas de Fidelización

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Tema 6 Parte III. Frameworks web para dispositivos móviles

Transcripción:

Introducción XSL 1 XSL (extensible Stylesheet Language)» XSLT (XSL Transformations)» XSL-FO (XSL Formatting Objects) XSLT:» Documento XML que especifica reglas para transformar un documento XML en otro XML.» Un documento XSLT, es decir una hoja de estilos ( stylesheet ), contiene plantillas ( templates ).» Un procesador de XSLT compara los elementos de un fichero XML con las plantillas de una hoja de estilos.» Utiliza la sintaxis de XPath para identificar los elementos.» Funciona con documentos bien formados (válidos o inválidos).» Posible utilizar espacios de nombres. 2 EJEMPLO <people> Introducción <person born="1912" died="1954"> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> <person born="1918" died="1988"> <name> <first_name>richard</first_name> <middle_initial>m</middle_initial> <last_name>feynman</last_name> </name> <profession>physicist</profession> <hobby>playing the bongoes</hobby> </person> Introducción Una hoja de estilo XSLT es un documento XML:» Tiene una declaración XML.» Puede tener una declaración de tipos del documento (DTD).» El elemento raíz es stylesheet o transform (sinónimos).» El espacio de nombres es: http://www.w3.org/1999/xsl/transform. Normalmente se utiliza el prefijo xsl. Lo mínimo: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/tran sform"> </people> 3 4 1

Introducción Introducción Esta pequeña hoja de estilos aplicada al ejemplo anterior obtendría ( utf-8 es un superconjunto de ASCII): <?xml version="1.0" encoding="utf-8"?> Alan Turing computer scientist mathematician cryptographer Richard M Feynman Procesadores de hojas de estilo:» Puede estar incorporado en un navegador web, como MSXML en IE 6.» Puede estar en un servidor web o de aplicaciones: Apache XML Project s Cocoon» Puede ser una aplicación independiente: Michael Kay s SAXON Apache XML Project s Xalan Al utilizar una hoja XSL remota, si un documento XML se presenta en un navegador: <?xml version= 1.0?> <?xml-stylesheet type= text/xsl href= http://www.oreilly.com/styles/people.xsl?> <people> physicist... Playing the bongoes 5 6 Plantillas Una plantilla se representa mediante el elemento xsl:template.» Este elemento tiene un atributo match que contiene un patrón XPath (un conjunto de nodos a partir de uno dado). El patrón más sencillo es un nombre de elemento.» Regla: condición, acción. Ejemplo: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/tran sform"> A Person 7 Plantillas La parte derecha de la regla-plantilla puede contener texto con marcas (bien formado). Ejemplo: <xsl:templates match="person"> <p>a Person</p> Uso de xsl:value-of (elimina todas las etiquetas debajo de select y se queda con el texto; su atributo select es una expresión XPath que determina un conjunto de nodos): <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <p> <xsl:value-of select="name"/> </p> 8 2

Plantillas Plantillas Un procesador XSLT recorre el árbol del documento XML desde la raíz.» Recorre antes los elementos padre que los hijos.» Para cada elemento, si existe una plantilla aplicable, se aplica y ya no se examinan más elementos descendientes. El elemento xsl:apply-templates permite hacer el orden de procesamiento explícito.» Su atributo select contiene una expresión XPath indicando los nodos a procesar El select de apply-templates y de value-of es una expresión XPath referida al nodo actual» El valor de match en un template es una EJEMPLO <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/tra nsform"> <xsl:template match="name"> <xsl:value-of select="last_name"/>, <xsl:value-of select="first_name"/> <xsl:apply-templates select="name"/> expresión XPath referida al nodo padre del examinado. 9 10 Plantillas El orden de las plantillas en la hoja de estilo sí importa (procesando desde el primero en adelante: son reglas)» Las reglas por defecto se pueden pensar al final de todo fichero Otro ejemplo: <xsl:template match="people"> <head><title>famous Scientists</title></head> <xsl:apply-templates select= person /> Para aplicar a todos los hijos:» <xsl:apply-templates/> Plantillas <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="people"> <head><title>famous Scientists</title></head> <xsl:apply-templates/> <xsl:template match="name"> <p><xsl:value-of select="last_name"/>, <xsl:value-of select="first_name"/></p> <xsl:apply-templates select="name"/> 11 12 3

Plantillas El resultado producido: <head> <title>famous Scientists</title> </head> <p>turing, Alan</p> <p>feynman, Richard</p> Plantillas por defecto Siete clases de nodos en un documento XML:»El raíz» Nodos de elementos» Nodos de atributos» Nodos de texto» Nodos de comentarios» Nodos de IP» Nodos de espacios de nombres. Para cada uno, XSLT tiene una regla por defecto ( built-in template rule ), que dice qué hacer si el autor no da instrucciones específicas. 13 14 Plantillas por defecto Plantilla por defecto para nodos de atributos y texto.» Los reproduce»sería: <xsl:template match= text() @* > <xsl:value-of select=. > <xsl:template> La función text() es una expresión XPath que vale para cualquier texto La expresión XPath @* concuerda con cualquier nodo de atributos Este template dice que los nodos de texto se reproducen, y con los de atributo la salida es el valor, pero no el nombre. El procesador en realidad nunca alcanza los nodos de atributo, salvo que se indique explícitamente. Se considera que, en realidad, los nodos de atributo no son nodos hijo de un nodo normal.» Ejemplo: 15 Plantillas por defecto <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="people"> <head><title>famous Scientists</title></head> <dl> <xsl:apply-templates/> </dl> <dt><xsl:apply-templates select="name"/></dt> <dd><ul> <li>born: <xsl:apply-templates select="@born"/></li> <li>died: <xsl:apply-templates select="@died"/></li> </ul></dd> 16 4

Plantillas por defecto <head> <title>famous Scientists</title> </head> <dl> <dt> Alan Turing </dt> <dd> <ul> <li>born: 1912</li> <li>died: 1954</li> </ul> </dd> <dt> Richard M Feynman </dt> <dd> <ul> <li>born: 1918</li> <li>died: 1988</li> </ul> </dd> </dl> 17 Plantillas por defecto Plantilla por defecto para nodos de elementos y para nodo raíz.» El template más importante garantiza que todos los hijos se procesan. <xsl:template match= * / > <xsl:apply-templates/> <xsl:template> La expresión XPath comodín * concuerda con todos los nodos de elementos, independientemente del nombre y del espacio de nombres en donde están. La expresión XPath / concuerda con el nodo raíz.» En las hojas de estilo, se puede hacer una especialización ( overriding ) de la plantilla por defecto. Sería como si todas estas reglas estuvieran siempre al final de cualquier fichero xls» Al aplicar una hoja de estilo, se ejecuta implícitamente: <xsl:apply-templates select= / >, que llama a todas las demás. 18 Plantillas por defecto Modos de una plantilla Plantilla por defecto para nodos de comentarios y de IP:» Es el siguiente: <xsl:template match= processing-instruction() comment() />» No produce ninguna salida Plantilla por defecto para nodos de espacios de nombres:» XSLT inserta cualquier declaración de espacios de nombres en el documento de salida automáticamente, sin necesidad de plantillas de espacios de nombres. Modos:» A veces, el mismo contenido de entrada necesita aparecer varias veces: El título de un capítulo (en el capítulo o en índice).» xsl:apply-templates y xsl:template pueden tener el atributo mode que indica el modo en que el template se activa.» Por ejemplo: 19 20 5

Modos de una plantilla Modos de una plantilla <xsl:stylesheet version="1.0" <head> xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <title>famous Scientists</title> <xsl:template match="people"> </head> <head><title>famous Scientists</title></head> <ul> <li>turing, <ul><xsl:apply-templates select="person" mode="toc"/></ul> Alan</li> <xsl:apply-templates select="person"/> <li>feynman, Richard</li> </ul> <p> Alan <!-- Table of Contents Mode Templates --> Turing <xsl:template match="person" mode="toc"> <xsl:apply-templates select="name" mode="toc"/> computer scientist mathematician cryptographer <xsl:template match="name" mode="toc"> </p> <li><xsl:value-of select="last_name"/>, <p> <xsl:value-of select="first_name"/></li> Richard M Feynman <!-- Normal Mode Templates --> physicist <p><xsl:apply-templates/></p> Playing the bongoes </p> 21 22 Modos de una plantilla Por cada modo que se defina, XSLT añade un template por defecto. Por ejemplo: <xsl:template match= * / mode= toc > <xsl:apply-templates mode= toc /> <xsl:template> Sigue ocurriendo, que se ejecuta al principio sólo: Plantillas para valores de atributos Posible uso de {...} :» Análogo al xsl:value-of, pero para introducir en los valores de atributos.» Ejemplo: <xsl:template match= name > <name first= {first_name} initial= {middle_initial} last= {last_name} /> <xsl:apply-templates select= / > 23 24 6

Uso de espacios de nombres Si en el ejemplo hubiéramos puesto: <people xmlns="http://namespaces.oreilly.com/people"> <person born="1912" died="1954">... entonces la hoja de estilos debería ser: Espacios de nombres <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:pe="http://namespaces.oreilly.com/people"> <xsl:template match="pe:people"> <head><title>famous Scientists</title></head> <xsl:apply-templates/> <xsl:template match="pe:name"> <p><xsl:value-of select="pe:last_name"/>, <xsl:value-of select="pe:first_name"/></p> <xsl:template match="pe:person"> <xsl:apply-templates select="pe:name"/> 25 26 Otros temas Otras posibilidades en XSLT:» Iteración, ordenación» Procesamiento condicional» Elementos y funciones de extensión» Importación de otras hojas de estilo Al poder invocar a funciones de extensión escritas en otros lenguajes, como Java, en XSLT se pueden hacer muchas más cosas. También se pueden considerar patrones generales (según XPath) en los atributos select (de value-of y apply-templates ) y match (de template ). Otros temas Posibles usos de XSLT:» Transformaciones estructurales. Desde un vocabulario a otro similar» Creación dinámica de documentos: En un documento, reordenar una tabla de acuerdo a otros criterios,... Otra alternativa es usar DOM desde Javascript, u otros lenguajes: Java, C++,... DOM es un lenguaje procedural. XSLT es un lenguaje declarativo.» Transformación en un lenguaje final de presentación HTML, WAP,... Útil debido a la variedad de navegadores 27 28 7

XPath Sirve para identificar partes de documentos XML (a partir de una posición determinada). Se pueden escribir expresiones como:» El primer elemento person» El séptimo hijo del tercer elemento person» El atributo id del primer elemento person cuyo contenido es Fred Jones»... En XPath se indican nodos por posición, posición relativa, tipo, contenido,... XPath XPointer usa expresiones XPath para identificar el punto particular de un documento XML apuntado por un enlace de XLink. Las expresiones XPath pueden contener también algunos elementos que son:» números» cadenas de caracteres» booleanos 29 30 XPath La más útil expresión XPath es un localizador ( location path ). Se puede seleccionar un nodo o un conjunto de nodos.» El más sencillo es / (nodo raíz)» La expresión XPath profession se refiere a todos los elementos hijos con esta etiqueta En el ejemplo siguiente se crea una tabla: 31 XPath <?xml-stylesheet type="text/xsl" href="people.xsl"?> <!DOCTYPE people [ <!ATTLIST homepage xlink:type CDATA #FIXED "simple" xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"> <!ATTLIST person id ID #IMPLIED> ]> <people> <person born="1912" died="1954" id="p342"> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <!-- Did the word computer scientist exist in Turing's day? --> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> <homepage xlink:href="http://www.turing.org.uk/"/> </person> <person born="1918" died="1988" id="p4567"> <name> <first_name>richard</first_name> <middle_initial>m</middle_initial> <last_name>feynman</last_name> </name> <profession>physicist</profession> <hobby>playing the bongoes</hobby> </person> </people> 32 8

XPath <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:apply-templates select="people"/> <xsl:template match="people"> <table> <xsl:apply-templates select="person"/> </table> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="@born"/></td> <td><xsl:value-of select="@died"/></td> </tr> XPath Otras expresiones XPath:» comment(), text(), y processing-instruction() Comodines ( wildcards ):»* Todos los nodos, excepto nodos de: atributos, nodos de texto, comentarios, o IP. Se puede poner un prefijo de espacio de nombres delante del asterisco.» node() Todos los nodos (también texto,...)»@* Los nodos de atributo. Se puede poner un prefijo de espacio de nombres delante. 33 34 XPath XPath Posible uso de (opcionales)» Ejemplo: <xsl:template match= first_name last_name > <xsl:value-of select= text() /> Aparte de las expresiones XPath habituales:» nombre-de-elemento, @ y nombre atributo, /, comment(), text(), node(), processinginstruction()... se pueden combinar con / en la jerarquía. También se puede usar. para referirse al nodo actual;.. para referirse al nodo padre; // para referirse a los descendientes del nodo actual (incluyendo el nodo actual). 35 Por ejemplo, se pueden utilizar:» /people/person/name/first_name/text()» //@id --> todos los atributos id en el documento» person//@id --> todos los atributos id del nodo person y sus descendientes» //middle_initial/../first_name es otra posibilidad.» <xsl:template match= comment() > <span class= comment > <i><xsl:value-of select=. ></i> </span> <xsl:template>» <xsl:template match= name > <strong><xsl:value-of select=. ></strong> <xsl:template> 36 9

Predicados Predicados. Ejemplos (llamada implícita a value-of ):» //profession[.= physicist ] También se puede utilizar una comilla (en lugar de doble): <xsl:template match= //profession[.= physicist ]>» //person[profession= physicist ]» //person[@id= p4567 ]» Además de =, XPath permite el uso de <, >, >=, <=, >=,!= <xsl:apply-templates select= //person[@born<=1976] />» Se puede usar and y or : //person[@born<=1920 and @born>=1910] Predicados Se pueden utilizar como predicados expresiones con valores no booleanos. Se tienen equivalencias como:» El valor es un conjunto de nodos, es verdadero si el conjunto es no vacío.» Una cadena de caracteres es verdadero si no es vacía. Ejemplo: //name[middle_initial] Otro ejemplo:» /people/person[@born < 1950]/name[first_name = Alan ] 37 38 Sintaxis no abreviada También se puede utilizar otra sintaxis no abreviada que es más flexible. Equivaldrían: people/person/@id child::people/child::person/attribute::id /people/person[@born<1950]/name[first_name= Alan ] /child::people/child::person[@born<1950]/child::n ame[first_name= Alan ] La sintaxis no abreviada no se puede usar en el patrón match. Mayor accesibilidad:» En la abreviada, se puede acceder según los ejes siguientes (en términos de la sintaxis no abreviada): child, parent, self, attribute, descendant-or-self» En la no abreviada se permiten otros ocho ejes: ancestor axis, following-sibling axis,...» Por ejemplo: Sintaxis no abreviada <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <dl> <xsl:apply-templates select="descendant::person"/> </dl> <dt><xsl:value-of select="child::name"/></dt> <dd> <ul> <xsl:apply-templates select="child::name/following-sibling::*"/> </ul> </dd> <xsl:template match="*"> <li><xsl:value-of select="self::*"/></li> <xsl:template match="homepage" xmlns:xlink="http://www.w3.org/1999/xlink"> <li><xsl:value-of select="attribute::xlink:href"/></li> 39 40 10

Sintaxis no abreviada La salida es (por ejemplo para la segunda persona): <dt>richard M Feynman</dt> <dd> <ul> <li>physicist</li> <li>playing the bongoes</li> </ul> </dd> generales XPath.» Los localizadores identifican un conjunto de nodos y se usan como valor de los atributos match y select.» Las expresiones generales pueden aparecer en: Valores directos del atributo select para un value-of Partes de predicados de localizadores» legales son: 3.1415 2+2 Juan Perez true() 32.5 < 76.2E-21 41 42 Números:» No existen enteros puros. Todos los números se almacenan en 8 bytes.» +infinito, -infinito, NaN ( not a number, al dividir por cero)» Operadores: 1) +, -, *, div, mod 2) =,!=, <, <=, >=» Ejemplo: <xsl:template match= person > <xsl:value-of select= @id div 10 /> Cadenas de caracteres:» abc, abc» Operadores =,!=, <, <=, >= (sólo tendría sentido si las cadenas de caracteres contienen números) 43 Booleanos:» XPath no incluye literales booleanos. En su lugar se utilizan true(), false()» Valores de los operadores: =,!=, >, <, >=, <=, and, or, not»uso: En predicados de localizadores En el atributo test del xsl:if o del xsl:when Ejemplos: <xsl:template match= profession > <xsl:if test=.= computer scientist or.= phisicist > <xsl:value-of select=. /> </xsl:if> 44 11

» Otro ejemplo: <xsl:template match= profession > <xsl:choose> <xsl:when test=.= computer scientist > <i><xsl:value-of select=. /></i> </xsl:when> <xsl:otherwise> <xsl:value-of select=. /> </xsl:otherwise> </xsl:choose> 45 Funciones de XPath» Ejemplo: position() <xsl:template match= person > person <xsl:value-of select= position() />, <xsl:value-of select= name />» Los tipos de retorno son: boolean, number, node set, string No hay funciones void» XPath no es un strongly typed language (como por ejemplo Java): Por ejemplo, si se mete un boolean donde se espera un string, se convierte a true o false La única excepción es que no se puede convertir un string a un boolean, ni tampoco un number a un node set» Función round : p.e. round(3.14)-->3» Función starts-with(<string>, <string>) : <xsl:apply-templates select= name[starts-with(last_name, T )] /> 46» Hay funciones con número variable de argumentos: concat( abc, uadlf, alkjf )» XSLT permite usar funciones implementadas en otros lenguajes. Por ejemplo, se puede hacer una consulta SQL a un servidor remoto de BD y obtener el resultado como un conjunto de nodos.» Funciones de conjuntos de nodos count(<node-set>) --> número de nodos Por ejemplo, count(//name) id(<string>) <node-set> Por ejemplo, id( p342 p4567 ) --> conjunto de nodos con estos id» Tipo ID debe estar declarado en el DTD namespace-uri Toma como argumento un conjunto de nodos y devuelve el espacio de nombres (URI) del primer nodo. local-name Toma como argumento un conjunto de nodos y devuelve el nombre (sin incluir prefijo) local del primer nodo. name Toma como argumento un conjunto de nodos y devuelve el nombre completo (incluyendo prefijo) del primer nodo En las tres últimas funciones, si se consideran sin argumentos, se considera el nodo actual.» Funciones sobre strings : Operaciones básicas: longitud, cambiar letras de mayúsculas a minúsculas. 47 48 12

string(<argumento>) --> convierte a string Booleans --> true o false Conjunto de nodos --> del primer nodo» El mismo valor que el obtenido por el xsl:value-of» Texto Unicode después de resueltas las referencias de entidad y se hayan quitado las etiquetas, comentarios, e IP. Números --> 1987, 2.71828, 2.998E+10» En XSLT, xsl:number da control sobre el formato starts-with(<string>, <string>) No existe ends-with contains(<string>, <string>) substring-before(<string>, <string>) substring-after(<string>, <string>) substring(<string>, <posicion1>, <posicion2>) string-length(<argumento>) --> longitud del valor string de su argumento string-length() --> del nodo actual 49» Funciones booleanas true() -> verdadero false()-> falso not(<argumento>) boolean(<argumento>), boolean()-> convierte a booleano: Números --> falso si son 0 o NaN Conjuntos de nodos --> falso si es vacío Strings --> falso si es» Funciones numéricas: No hay raiz cuadrada o exponenciación number(<argumento>) lo convierte a número booleano --> 0, 1 string : 3.2 ->3.2, abc ->NaN round(<arg>), floor(<arg>), ceiling(<arg>) 50 13