XML: Reglas Básicas de Formación



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

Transformación de documentos XML con

XSL: extensible Style Language. Anabel Fraga

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

Transformación de documentos : XSLT

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

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

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

Contenido. Complemento Nomina. Estructura

XML-Schema. XML-Schema. XML-Schema. XML-Schema. Ventajas de XML-Schema con respecto a las DTD s:

XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición)

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

PREGUNTAS TIPO (EXAMEN DE OFIMÁTICA AVANZADA)

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

Práctica 5: Oracle XML DB

Validación de un XML

CAMINANDO HACIA LA WEB SEMÁNTICA

Unidad 4: XSLT y XPATH. JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012

Capítulo 1 Documentos HTML5

Introducción a XML. Taller de Producción de Software 2º Semestre 2008 H.Astudillo / P.Inostroza

Práctica de introducción a

1 Introducción a XML

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

Agenda XML XML XML XML XML. 1.1 Conceptos básicos de XML. 1.2 Ejemplos de lenguajes basados en XML. 1.3 Estructura de un documento XML

Contenido. Complemento de Estado de Cuenta Bancario. Estructura

Curso PHP Módulo 1 R-Luis

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

Estructura. Elementos Elemento: Intereseshipotecarios Diagrama. Contenido. Complemento de Intereses hipotecarios

7.3.3 Ejemplo de hoja XSLT

extensible Markup Language

Unidad 5: Namespaces. JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012

5.1 Introducción a XSL

Contenido. Formato SelloDigitalContElec. Se deberá utilizar el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.

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

CREACIÓN Y CONFIGURACIÓN DE WIKIS

extensible Markup Language (XML)

Manual de Desarrollador Autenticación Automática

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

Añadido de Funcionalidades en D2 para su lanzamiento en BATCH

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

Semantic Annotation for WSDL and XML SAWSDL

XSLT. Apuntes de guerrilla

Proyecto Unico Interpretador de SetCalc

Visualización y Transformaciones en XML

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008

XSLT. Tecnólogo en Informática. Ing. Sebastián Vergara

2 Estructura de un Documento XML

Web Services de G-Inside

Espacios de Nombres. Documentación Electrónica. Soto Montalvo

FSE2007. Formato de fichero de Verificaciones UAFSE-FSE2007. Formato de fichero de Verificaciones. Página 1 de 8 FSE2007

DEFINICIÓN DE ONTOLOGÍAS EN SOFIA2

Realizar un esquema para el almacenamiento de CD musicales con las

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

TEMA 5 LA FAMILIA XML EN LA NUEVA WEB

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD.

Manual de uso de la Administración ITALO

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 7

Apuntes básicos del Tema 9

XML, parte 3. M. en C. Erika Vilches

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

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

XML Schema. Definición y validación

M. Carmen Fernández Panadero

Fundamentos de las tecnologías de la información

Buscadores basados en agentes inteligentes

Análisis de esquemas XML [1]

IES Pablo Serrano-ASIR1D/DAM1D-B.Soler XML

Transformación del Modelo Relacional en UML a XML

Estructura Elemento: EstadoDeCuentaCombustible Diagrama

XMLSpy. Manual de usuario.

Sintaxis y configuración de plantillas

Especificación Técnica del Web Service de Autenticación y Autorización WSAA Para el desarrollo de Clientes de Entidades Externas

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

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

Especificación Técnica del WebService de Autenticación y Autorización

XML, DTD y hojas de estilo

ESOFT 3 Nice Screen Scraper: A simple scraper

Práctica 4 Manejo avanzado de Bison

Esquemas XML para intercambio de documentos electrónicos y expedientes electrónicos

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

Manual de Desarrollador Externo

Consulta a Padrón Nivel 10

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

El nombre de cada uno de los archivos, debe especificarse mediante la siguiente secuencia de caracteres:

Consulta a Padrón Nivel 3

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

Kaldeera Advanced Forms 2009 Guía del usuario

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Análisis y Diseño de Sistemas de

El nombre de cada uno de los archivos, debe especificarse mediante la siguiente secuencia de caracteres:

Especificación Técnica del WebService de Autenticación y Autorización

XML para FP : Introducción

Semántica Denotacional

NORMA DE DIGITALIZACIÓN ADADA018 ADICIONALES EXPEDIENTESTRU

LAS BARRAS. La barra de acceso rápido

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Resolución del 29 de Octubre del 2015 Anexo No. 4 Especificaciones Técnicas FONDO DE CESANTIAS Formato Versión 1

Transcripción:

Tecnologías XML http://www.it.uc3m.es/pedmume/

XML: Introducción XML es un formato para almacenamiento y estructuración de datos que se encuentra en ficheros de texto Un conjunto de datos de una base de datos puede ser pasado a XML y viceversa Algunos usos de XML Información de usuarios, productos, cosas, etc. Descripción de comportamiento o procesos Descripción de protocolos de comunicaciones Descripción de lenguajes 2

XML: Reglas Básicas de Formación Un fichero XML debe seguir las siguientes reglas Empezar por la línea <?xml version="1.0"?> Todo elemento en XML tiene un delimitador de inicio y otro de fin y puede tener atributos asociados Inicio: <nombre_elemento atributo1= valor1 atributo2= valor2 > Fin: </nombre_elemento> Se tiene un único elemento raíz El elemento raíz puede tener en su interior un número indefinido de elementos anidados (implica que los elementos que haya en su interior sus delimitadores de inicio y fin estarán dentro del delimitador de inicio y fin del elemento raíz) así como texto Cualquier elemento puede tener en su interior un número indefinido de elementos anidados, así como texto Para insertar comentarios: <!-- Comentario insertado --> 3

XML: Reglas Adicionales de Formación Un fichero XML debe además seguir las siguientes reglas Se pueden escapar caracteres para que no se interpreten como caracteres especiales del fichero XML <(&lt), > (&gt), & (&amp), (&apos), (&quot) <![CDATA[" texto que no será interpretado"]]> Cualquier elemento puede llevar un atributo especial que sirve para definir espacios de nombres. Sirve para poder tener diferentes vocabularios XML de diferentes fuentes. La forma es la siguiente <nombre_elemento xmlns= URIdefecto xmlns:n1= URI1 xmnls:n2= URI2 > Otros elementos que estén contenidos en aquel donde se definió un espacio de nombres, llevarán el nombre del espacio de nombres precediendo al elemento (<n1:nombre_elemento>), excepto el definido por defecto que no lleva nada 4

XML: Reglas de Nombres y de Convención Cualquier nombre de elemento XML debe seguir las siguientes reglas Los nombres no pueden contener espacios No pueden empezar con signos de puntuación ni con ciertas palabras reservadas Los valores de sus atributos deben ir o bien entre comillas simples o bien entre comillas dobles Son sensibles a las letras mayúsculas y minúsculas Ciertas convenciones en los nombres de elementos y atributos Se suelen indentar los diferentes elementos anidados a la hora de escribirse 5

XML: Ejemplo <?xml version="1.0"?> <alimentos xmlns= http://www.it.uc3m.es/pedmume/a xmlns:carne= http://www.it.uc3m.es/pedmume/b xmlns:legumbres= http://www.it.uc3m.es/pedmume/c xmlns:garbanzos= http://www.it.uc3m.es/pedmume/d > <carne id= 3 > La carne que vendemos es la siguiente: <carne:ternera> <carne:tipo> filete </carne:tipo> <preparacion> guisada </preparacion> </carne:ternera> </carne> <legumbres id= 7 > Las legumbres que vendemos son las siguientes: <legumbres:lentejas> <preparacion> guisada </preparacion> </legumbres:lentejas> <legumbres:garbanzos> <procedencia> <garbanzos:casa_mayor/></procedencia> <preparacion> guisada </preparacion> </legumbres:garbanzos> </legumbres> </alimentos > 6

XML como un Árbol Todo fichero XML puede ser visto como un árbol en el que cada elemento puede contener otros de una manera jerárquica Cualquier realidad se puede modelar como un árbol. Técnicas orientadas a objetos pueden facilitar la tarea Si definimos nodo XML como cualquier elemento, atributo o texto, entonces son nodos hoja los siguientes Todos los atributos porque no pueden contener nada más ellos mismos Todos los textos porque no pueden contener nada más ellos mismos Los elementos que no tienen otros elementos ni atributos ni texto contenidos en ellos 7

XML: Ejemplo de Árbol alimentos id carne legumbres id Texto 1 Texto 2 carne:ternera legumbres: lentejas legumbres: garbanzos carne:tipo preparacion preparacion preparacion Texto 3 Texto 4 Texto 5 garbanzos: procedencia Texto 6 garbanzos: CasaMayor 8

XML: Ejemplo de Utilidad de Datos <?xml version="1.0"?> <alimentos xmlns= http://www.it.uc3m.es/pedmume/a xmlns:carne= http://www.it.uc3m.es/pedmume/b xmlns:legumbres=http://www.it.uc3m.es/pedmume/c xmlns:garbanzos= http://www.it.uc3m.es/pedmume/d > <carne id= 3 > La carne que vendemos es la siguiente: <carne:ternera> <carne:tipo> filete </carne:tipo> <preparacion> guisada </preparacion> </carne:ternera> </carne> <legumbres id= 7 > Las legumbres que vendemos son las siguientes: <legumbres:lentejas> <preparacion> guisada </preparacion> </legumbres:lentejas> <legumbres:garbanzos> <procedencia> <garbanzos:casa_mayor/></procedencia> <preparacion> guisada </preparacion> </legumbres:garbanzos> </legumbres> </alimentos > 9

XML: Ejemplo de Utilidad de Comportamiento <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="urn:datos" xmlns=http://schemas.xmlsoap.org/wsdl/> <wsdl:message name="setresponse > <wsdl:part name="setreturn" type="xsd:string"/> </wsdl:message> <wsdl:message name="setrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:part name="in2" type="xsd:string"/> </wsdl:message> <wsdl:porttype name="datos"> <wsdl:operation name="set" parameterorder="in0 in1 in2"> <wsdl:input message="impl:setrequest" name="setrequest"/> <wsdl:output message="impl:setresponse" name="setresponse"/> </wsdl:operation> </wsdl:porttype>.. </wsdl:definitions> 10

XML: Ejemplo de Utilidad de Protocolo: SOAP de respuesta <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <setresponse soapenv:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"> <setreturn xsi:type="xsd:string">ok</setreturn> </setresponse> </soapenv:body> </soapenv:envelope> 11

XML: Comparación con Bases de Datos y HTML XML vs Bases de Datos Se puede representar lo mismo, de hecho hay bases de datos basadas en XML XML posibilita la interoperabilidad, el reuso, la compartición, el intercambio, etc. XML vs HTML XML no está orientado a la presentación de contenidos sólo a la estructura, mientras que HTML incluye cuestiones de presentación. XML contiene datos, HTML mezcla datos y presentación 12

XMLSchema: XSD Además de las reglas que un fichero XML debe cumplir por el hecho de ser XML, se pueden describir más reglas relativas a: Los tipos de datos que tendrán los elementos y los atributos Qué elementos puede contener otro elemento y qué combinaciones son posibles (orden, número, etc.) Si un nodo puede o no contener texto Este establecimiento de reglas adicionales se realizan mediante descripciones textuales, siendo metalenguajes que describen otros lenguajes DTD. Ficheros con extensión dtd XML Schema. Es XML también. Ficheros con extensión xsd 13

XMLSchema: Tipos de datos simples Números: xs:int, xs:integer, xs:decimal, xs:long, xs:short, xs:double, xs:float, xs:byte, etc. Strings: xs:string, xs:id, xsd:idref, xsd:token, xsd:normalizedstring, etc. Fechas: xs:date, xs:time, xs:datetime, xs:duration, etc. Booleanos: xs:boolean URIs: xs:anyuri 14

XMLSchema: Restricciones en los tipos de datos simples Los tipos de datos se pueden ajustar para concretar más cuales son los valores posibles del nuevo tipo de datos La manera de establecer restricciones en un tipoa <xs:simpletype name= tiposimpleconrestricciones > <xs:restriction base="xs:tipoa"> <!-- Por aquí se establecen las restricciones --> </xs:restriction> </xs:simpletype> Dentro de las etiquetas de restricción se pueden poner tantas etiquetas XSD de restricciones como se requieran El nuevo tipo definido se puede enlazar tanto para los elementos como los atributos 15

XMLSchema: Etiquetas de restricción xs:mininclusive, xs:minexclusive, xs:maxinclusive, xs:maxexclusive xs:length, xs:minlength, xs:totaldigits, xs:fractiondigits xs:enumeration xs:pattern xs:whitespace 16

XMLSchema: Tipos de Descripciones En el XMLSchema hay que describir: Atributos Elementos simples. No pueden contener ni atributos ni otros elementos. Sólo pueden contener texto Elementos complejos Elementos vacios. Sólo puede contener atributos Elementos que sólo pueden contener texto y atributos Elementos que sólo pueden contener otros elementos y atributos Elementos que pueden contener de todo: texto, atributos y otros elementos 17

XMLSchema: Descripción de atributos La manera básica es <xs:attribute name= nombre" type= tipo"/> El tipo puede ser por defecto o definido según restricciones Se pueden añadir atributos a la descripción de atributos default fixed use: puede ser optional o required que implica si es obligatorio o no el poner dicho atributo al elemento en cuestión. Por defecto es opcional si no se pone dicho parámetro 18

XMLSchema: Descripción de elementos simples La manera básica es <xs:element name= nombre" type= tiposimple"/> El tiposimple puede ser uno definido por defecto en la especificación o definido según restricciones Se pueden añadir atributos a la descripción de atributos default fixed 19

XMLSchema: Descripción de elementos vacios (con atributos) La manera básica es <xs:element name= nombre" type= idtipocomplejo"/> El idtipocomplejo enlaza a algo de la siguiente forma: <xs:complextype name= idtipocomplejo"> <xs:attribute name= nombre" type= tiposimple"/> <!-- Por aquí tantos atributos como sean necesarios--> </xs:complextype> 20

XMLSchema: Descripción de elementos con texto y atributos La manera básica es <xs:element name= nombre" type= idtipocomplejo"/> El idtipocomplejo enlaza a algo de la siguiente forma: <xs:complextype name= idtipocomplejo"> > <xs:simplecontent> <xs:extension base= tiposimple">... <!-- Por aquí tantos atributos como sean necesarios-->... </xs:restriction> </xs:simplecontent> </xs:complextype> El texto será del tiposimple definido 21

Descripción de elementos con otros elementos y atributos La manera básica es <xs:element name= nombre" type= idtipocomplejo"/> El idtipocomplejo enlaza a algo de la siguiente forma: <xs:complextype name= idtipocomplejo"> <xs:attribute name= nombre" type= tiposimple"/> <!-- Por aquí tantos atributos como sean necesarios--> <xs:sequence> <!-- Por aquí tantos otros elementos como sean necesarios--> </xs:sequence> </xs:complextype> No solo puede ser xs:sequence, también xs:all, xs:choice Cada elemento contenido puede tener xs:minoccurs, xs:maxoccurs 22

Descripción de elementos con otros elementos, atributos y texto Es como en el caso anterior, pero se incluye el atributo mixed al elemento <xs:complextype> y se le asigna el valor de true 23

Agrupaciones y Extensiones de elementos y atributos Un conjunto de elementos se pueden agrupar con <xs:group> y luego con el identificador del grupo se puede referenciar desde otro lado. El grupo deberá empezar con alguna etiqueta <xs:sequence>, <xs:all> o <xs:choice> Un conjunto de atributos se pueden agrupar con <xs:groupattributes> y luego con el identificador del grupo se puede referenciar desde otro lado De manera análoga, <xs:any> sirve para extender una definición con cualquier elemento, mientras que <xs:anyatributte> hace lo mismo para atributos 24

Ejemplo de XMLSchema a mejorar <?xml version="1.0" encoding="utf-16"?> <xsd:schema attributeformdefault="unqualified" elementformdefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="alimentos" type="alimentostype" /> <xsd:complextype name="alimentostype"> <xsd:sequence> <xsd:element name="carne" type="carnetype" /> <xsd:element name="legumbres" type="legumbrestype" /> </xsd:sequence> </xsd:complextype> <xsd:complextype name="legumbrestype"> <xsd:sequence> <xsd:element name="legumbres:lentejas" type="legumbres:lentejastype" /> <xsd:element name="legumbres:garbanzos" type="legumbres:garbanzostype" /> </xsd:sequence> <xsd:attribute name="id" type="xsd:int" /> </xsd:complextype> <xsd:complextype name="legumbres:garbanzostype"> <xsd:sequence> <xsd:element name="procedencia" type="procedenciatype" /> <xsd:element name="preparacion" type="xsd:string" /> </xsd:sequence> </xsd:complextype> <xsd:complextype name="procedenciatype"> <xsd:sequence> <xsd:element name="garbanzos:casa_mayor" type="xsd:string" /> </xsd:sequence> </xsd:complextype> <xsd:complextype name="legumbres:lentejastype"> <xsd:sequence> <xsd:element name="preparacion" type="xsd:string" /> </xsd:sequence> </xsd:complextype> <xsd:complextype name="carnetype"> <xsd:sequence> <xsd:element name="carne:ternera" type="carne:terneratype" /> </xsd:sequence> <xsd:attribute name="id" type="xsd:int" /> </xsd:complextype> <xsd:complextype name="carne:terneratype"> <xsd:sequence> <xsd:element name="carne:tipo" type="xsd:string" /> <xsd:element name="preparacion" type="xsd:string" /> </xsd:sequence> </xsd:complextype> </xsd:schema> 25

Ejercicios Mejorar el XMLSchema anterior para hacer algo más significativo y diferenciando los diferentes espacios de nombres Hacer un XMLSchema para almacenar la información de la aplicación de gestor de actividades deportivas explicada en la sesión de bases de datos 26

XSLT: Introducción XSLT: EXtensible Stylesheet Language Idea general XML: Almacena datos y estructura XML Schema: Da las reglas de cómo formar documentos XML XSLT: Sirve para transformar documentos XML en otros documentos, como puede ser otros documentos XML con otro XML Schema, HTML, etc. CSS vs XSLT XSLT utiliza XPath para navegar por los diferentes elementos y atributos de un documento XML 27

XSLT: Etiquetas de inicio y enlace desde fichero XML Se empieza con la siguiente línea en el fichero XSL <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> El stylesheet se puede reemplazar por transform Desde un fichero XML, se le indica el fichero XSL que será tenido en cuenta para realizar la transformación <?xml-stylesheet type="text/xsl" href= nombrefichero.xsl"?> Es importante saber en cada momento en que nodo está el procesador en una transformación XSLT, en principio empezamos en el nodo raíz 28

XSLT: templates Define una plantilla que se aplicará a una serie de nodos para generar una determinada salida Sintaxis <xsl:template name= nombre1 match = patron priority = numero mode = nombre2>. </xsl:template> Explicación de parámetros name es el nombre de la plantilla y se puede referenciar match es una expresión XPath que indica el nodo o nodos a los que se aplicará la plantilla, que serán todos los que cumplan el patrón priority es un número entre -9 y 9, si varias coincidencias, lo de menos prioridad no se aplican mode permite procesar un elemento varias veces 29

XSLT: Introducción a expresiones XPath Es un lenguaje para poner expresiones que permiten localizar nodos en un documento XML La selección de nodos es parecida a cómo poner rutas en un sistema de ficheros Algunos operadores importantes / //... @ 30

XSLT: value-of Imprime el valor de texto del nodo seleccionado Sintaxis <xsl:value-of select = patron disable-output-escaping = "yes" "no > </xsl:value-of> Explicación de parámetros select. Obligatorio, tiene que ser una expresión XPath que indica el nodo a los que se aplicará el obtener el valor y mostrarlo. Si hay varios que lo cumplen, sólo se muestra el valor del primero de ellos Disable-output-escaping. Opcional. Por defecto vale No, pero si se indica como Yes entonces no se escapan los caracteres del atributo select 31

XSLT: for-each Selecciona una serie de nodos y realizará una pasada por el bucle por cada nodo, representando en cada pasada uno de dichos nodos seleccionados Sintaxis <xsl:for-each select = patron> </xsl:for-each> Explicación de parámetros select. Obligatorio, tiene que ser una expresión XPath que indica los nodos que va a recorrer. Por cada nodo seleccionado, se realizará una pasada por el bucle con su valor 32

XSLT: apply-templates Enlaza con la template que se debe aplicar para un conjunto de nodos Sintaxis <xsl:apply-templates select = patron mode = nombre> </xsl:apply-templates> Explicación de parámetros select. Opcional, tiene que ser una expresión XPath que indica los nodos a los que se va a aplicar el patrón. Por cada nodo seleccionado, se irá al patrón correspondiente indicado mode. Opcional, permite que se pueda procesar varias veces un elemento 33

XSLT: sort Ordena la lista de nodos desordenada obtenida por foreach o apply-templates Sintaxis <xsl:sort select = patron lang = { string } data-type = { "text" "number" nombre } order = { "ascending" "descending" } case- order = { "upper-first" "lower-first" } /> Explicación de parámetros más importantes select. Opcional, tiene que ser una expresión XPath que indica en base a que nodos se va a proceder a realizar la ordenación 34

XSLT: if Realiza un cierto procesado si se cumple una determinada condición Sintaxis <xsl:if test = boolean-expression> </xsl:if> Explicación de parámetros más importantes Test. Obligatorio, se pone una expresión de la que se valida su certeza o falsedad. Si es cierta, entonces se realiza el procesado adecuado. Algo se considera cierto cuando existe al menos un nodo que cumple la expresión 35

XSLT: choose, when, otherwise Realiza un cierto procesado si se cumple una determinada condición Sintaxis <xsl:choose> <xsl:when test="expression">... some output... </xsl:when> <xsl:otherwise>... some output... </xsl:otherwise> </xsl:choose> Se realiza aquel procesado tal que cumpla la condición, si hay varios se realiza el primero de ellos. Si no se cumple ninguno, se hará el de otherwise 36

XSLT: text Genera un nodo de texto Sintaxis <xsl:text disable-output-escaping = "yes" "no"> </xsl:text> 37

XSLT: Ejemplo <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <!--Generate the initial RDF headers--> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <!--Generate the different annotations of subject for each different resource--> <!--For every resource--> <xsl:for-each select="loms/results/lom"> <!--Write the description of a resource with some identifier given by the entry--> <xsl:text disable-output-escaping="yes"><rdf:description rdf:about="</xsl:text> <xsl:value-of select="general/identifier/entry"/> <xsl:text disable-output-escaping="yes">"></xsl:text> 38

XSLT: Ejemplo (continuación) <!--For every subject given by the keyword--> <xsl:for-each select="general/keyword/string"> <xsl:if test="@language = 'en'"> <dc:subject rdf:datatype="http://www.w3.org/2001/xmlschema#string"> <xsl:value-of select="."/> </dc:subject> </xsl:if> </xsl:for-each> <!--For every subject given by the purpose--> <!-- <xsl:for-each select="classification/purpose/value"> <dc:subject rdf:datatype="http://www.w3.org/2001/xmlschema#string"> <xsl:value-of select="."/> </dc:subject> </xsl:for-each> --> <!--For the title--> <xsl:for-each select="general/title/string"> <xsl:if test="@language = 'en'"> <dc:title rdf:datatype="http://www.w3.org/2001/xmlschema#string"> <xsl:value-of select="."/> </dc:title> </xsl:if> </xsl:for-each> <xsl:text disable-output-escaping="yes"></rdf:description></xsl:text> </xsl:for-each> </rdf:rdf> </xsl:template> </xsl:stylesheet> 39

Trabajo propio del alumno asociado a la sesión Tutorial de XML (básico, avanzado, ejemplos): http://www.w3schools.com/xml/default.asp Tutorial de XML Schema (tutorial de esquema, tipos simples, tipos complejos, tipos de datos, referencias de esquema): http://www.w3schools.com/schema/default.asp Tutorial de XSLT (básico, avanzado, ejemplos, referencias); http://www.w3schools.com/xsl/default.asp Tutorial de Xpath: http://www.w3schools.com/xpath/default.asp 40

Referencias Extra XML por el W3C, http://www.w3.org/tr/2008/rec-xml- 20081126/ XML Schema por el W3C, http://www.w3.org/xml/schema XSLT por el W3C, http://www.w3.org/tr/xslt XPath por el W3C, http://www.w3.org/tr/xpath/ A. Skonnard, M. Gudgin, Essential XML Quick Reference: A Programmer's Reference to XML, XPath, XSLT, XML Schema, SOAP, and More http://www.theserverside.net/books/addisonwesley/essen tialxml/downloads/essentialxml.zip 41