XML - UC3M

Anuncio
Tecnologías XML
Pedro J. Muñoz Merino
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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 -->
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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 >
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
7
XML: Ejemplo de Árbol
alimentos
carne
id
legumbres
Texto 1
Texto 2
carne:ternera
carne:tipo
Texto 3
id
preparacion
Texto 4
legumbres:
garbanzos
legumbres:
lentejas
preparacion
Texto 5
preparacion
garbanzos:
procedencia
Texto 6
garbanzos:
CasaMayor
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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 >
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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>
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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>
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
13
XMLSchema: Tipos de datos simples
●
Números:
―
●
Strings:
―
●
xs:int, xs:integer, xs:decimal, xs:long, xs:short, xs:double,
xs:float, xs:byte, etc.
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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>
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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’
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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"
/>
Pedro J. Muñoz Merino
</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>
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
―
/
―
//
―
.
―
..
―
@
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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" } caseorder = { "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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
36
XSLT: text
●
Genera un nodo de texto
●
Sintaxis
―
<xsl:text disable-output-escaping = "yes" | "no"> </xsl:text>
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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>
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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>
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
40
Referencias Extra
●
XML por el W3C, http://www.w3.org/TR/2008/REC-xml20081126/
●
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
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
41
Descargar