validación de xml -...

29
Validación de XML parte II JUAN CARLOS CONDE RAMÍREZ WEB-SERVICES

Upload: ngocong

Post on 24-May-2018

238 views

Category:

Documents


1 download

TRANSCRIPT

Validación de XMLparte IIJUAN CARLOS CONDE RAMÍREZ

WEB-SERVICES

Objetivos

FCC-BUAP 2

◦ Identificar la utilidad de los Espacios de Nombre (namespaces)

◦ Conocer el vocabulario básico relacionado con XML y lenguajes de marcado.

◦ Entender la importancia del lenguaje XHTML y sus características principales.

◦ Conocer las Hojas de estilo para XML (XSL) y su importancia para la definición de formatos.

◦ Comprender la importancia de las tecnologías XML como XSLT y XPath para el proceso de transformación de documentos.

Espacios de nombre (namespaces) I

•El objetivo principal de la especificación de espacios de nombre es permitir que el autor deldocumento le diga al analizador o parser qué DTD usar cuando analice un elemento dado.

•Es decir, que para una etiqueta se especifica que DTD usar, por lo que esto sólo tiene sentido sise usa más de un DTD.

◦ Por ejemplo, supongamos que tenemos un documento xml con libros y otro con discos (con suscorrespondientes DTD) y queremos mezclar ambas páginas.

FCC-BUAP 3

Espacios de nombre (namespaces) II

• Habrá elementos que no se llamen igual (paginas o tiempo), pero otros que si (titulo, autor).

• Entonces se usarían ambos DTD y utilizaríamos los espacios de nombre para distinguir aquelloselementos en los que no esté claro a que DTD pertenecen.

•Aunque el motivo de la especificación de los espacios de nombres fue usar más de un DTD, en larealidad ninguna herramienta soporta más de un DTD, por lo que sólo se utilizan los prefijos deespacios de nombres en XSLT, es decir, se utilizan para distinguir las etiquetas propias de XSLTcon las etiquetas del formato de salida, por ejemplo, XHTML o WML.

FCC-BUAP 4

Espacios de nombre (namespaces) III

•Los espacios de nombres se aplican tanto a atributos como a elementos.

•En este apartado sólo hemos considerado elementos. Para más información sobre los atributos,puedes consultar la especificación del W3C en: http://www.w3.org/TR/RECxml-names

•Para definir un espacio de nombres al que pertenece un elemento, es necesario añadir unatributo a la definición de elemento, donde el nombre del atributo sea xmlns ("xmlnamespace") y el valor puede ser una cadena cualquiera, aunque por convención suelen serURLs.

FCC-BUAP 5

Espacios de nombre (namespaces) IV•Por ejemplo, podemos hacer esto añadiendo una entrada como la siguiente en la lista dedefinición de atributos de un elemento title:

•Declarar el atributo como FIXED tiene varias características importantes:

◦ Evita que el documento especifique cualquier valor no correspondiente al atributo xmlns.

◦ Un elemento definido en este DTD se hace único (como el parser entiende el atributo xmlns), por esono genera conflictos con un elemento que tenga el mismo nombre en otro DTD

FCC-BUAP 6

<!ELEMENT title (%inline;)*>

<!ATTLIST title xmlns CDATA #FIXED "http://www.ejemplos.xml/slideshow"

>

Espacios de nombre (namespaces) V◦ Esto permite que múltiples DTDs usen el mismo nombre de elemento sin generar un error del

analizador

◦ Cuando un documento especifica el atributo xmlns para una etiqueta, el documento selecciona ladefinición de elemento con un atributo correspondiente.

•Cada nombre de elemento en nuestro DTD obtendría exactamente el mismo atributo con elmismo valor.

•Cuando un documento usa un nombre de elemento que existe sólo en uno de los archivos DTDque referencia, el nombre no necesita estar cualificado (tiempo páginas en el ejemplos de losdiscos y de los libros).

FCC-BUAP 7

Espacios de nombre (namespaces) VI

•Pero cuando se usa un nombre de elemento que tiene varias definiciones, se necesita algún tipode cualificación (nombre de disco y nombre de libro, por ejemplo).

•Cualificamos una referencia a un nombre de elemento especificando el atributo xmlns, comose ve a continuación:

•El espacio de nombres se aplica a ese elemento, y a cualquier elemento contenido dentro de él.

FCC-BUAP 8

<title xmlns="http://www.example.com/slideshow"> Tutorial </title>

Espacios de nombre (namespaces) VII•Usando el atributo xmlns, cuando necesitamos una sola referencia a un espacio de nombres,no es mucho trabajo, pero cuando necesitamos hacer la misma referencia varias veces, añadirdicho atributo se convierte en una tarea algo pesada.

•También hace difícil cambiar el nombre del espacio de nombres, en caso de que se quieramodificar posteriormente.

•La alternativa es definir un prefijo de espacio de nombres, que es tan sencillo como especificarxmlns, dos puntos (:) y el nombre del prefijo antes del valor del atributo, como se ve acontinuación:

FCC-BUAP 9

Espacios de nombre (namespaces) VIII

•Esta definición configura sl como un prefijo que puede usarse para cualificar el nombre delelemento actual y cualquier elemento dentro de él.

•Como el prefijo puede usarse en cualquier elemento contenido, tiene más sentido definirlo en elelemento raíz del documento XML.

FCC-BUAP 10

<sl:slideshow xmlns:sl=“http://www.example/slideshow”

...>

...

</sl:slideshow>

Espacios de nombre (namespaces) IX•Cuando el prefijo se usa para cualificar un nombre de elemento, la etiqueta final tambiénincluye el prefijo, como se muestra aquí:

•Finalmente podemos observar que se pueden definir varios prefijos en el mismo elemento,como se muestra a continuación:

FCC-BUAP 11

<sl:slideshow xmlns:sl='http://www.example/slideshow'

...> .

..

<slide>

<sl:title> Tutorial <sl:title>

</slide>

...

</sl:slideshow>

<sl:slideshow xmlns:sl=“http://www.example/slideshow” xmlns:chtml=“urn: ...”>

...

</sl:slideshow>

Ejercicio de namespaces

FCC-BUAP 12

<h:html xmlns:xdc=“http://www.xml.com/books” xmlns:h=“http://www.w3.org/HTML/1998/html4”>

<h:head><h:title>Book Review</h:title></h:head>

<h:body>

<xdc:bookreview>

<xdc:title>XML: A Primer</xdc:title>

<h:table>

<h:tr align="center">

<h:td>Author</h:td><h:td>Price</h:td>

<h:td>Pages</h:td><h:td>Date</h:td>

</h:tr>

<h:tr align="left">

<h:td><xdc:author>Simon St. Laurent</xdc:author></h:td>

<h:td><xdc:price>31.98</xdc:price></h:td>

<h:td><xdc:pages>352</xdc:pages></h:td>

<h:td><xdc:date>1998/01</xdc:date></h:td>

</h:tr>

</h:table>

</xdc:bookreview>

</h:body>

</h:html>

Detalles del Ejercicio• En el ejemplo los elementos que tiene el prefijo xdc están asociados a un espacio de nombrescuyo identificador es http://www.xml.com/books.

•Mientras que los que tienen el prefijo h están asociados con un espacio de nombres cuyoidentificador es http://www.w3.org/HTML/1998/html4.

FCC-BUAP 13

Vocabularios y lenguajes de marcado

◦ XHTML - eXtended HTML

◦ WML - Wireless Mark-up Language

◦ SVG - Scalable Vector Graphics

◦ CDF - Channel Definition Format

◦ RDF - Resource Definition Framework

◦ XUL - eXtensible User Interface Language

◦ GEML - Gene Expression Markup Language

◦ VISA - Invoice Specification

◦ VoxXML, VoiceXML, JSML

◦ ...

FCC-BUAP 14

XHTML I

•XHTML v1.0 Es una reformulación de HTML4 escrito de forma que cumpla las normas sintácticasde XML.

•XHTML, ya que es una aplicación XML, ha sido diseñado para ser ampliable.

•XHTML ha sido diseñado pensando en la portabilidad, y su visualización en diferente hardware(computadoras personales, PDAs, teléfonos celulares, etc.).

FCC-BUAP 15

XHTML II

•Los nombres de las etiquetas de elementos tienen que estar en minúscula.

•Los valores de los atributos deben estar rodeados de comillas (") o (')

•Todos los elementos tienen que estar cerrados, ya tengan contenido (<p>...</p>) o no(<br/>).

FCC-BUAP 16

XHTML III

•Los elementos deberán estar correctamente anidados.

•Los valores de atributos iguales sin variantes no pueden ser simplificados.

•Algunos elementos (html, body, head, ...) son obligatorios.

FCC-BUAP 17

<OPTION VALUE="valor" SELECTED> (incorrecto)

option value="valor" selected="selected">

XHTML IV

•Se debe incluir una Declaración de Tipo de Documento (DTD).

FCC-BUAP 18

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"

"http://www.w3.org/TR/xhtml1/DTD/frameset.dtd">

XHTML V

•El contenido de los elementos <script> y <style> tiene que ser una sección CDATA.

FCC-BUAP 19

<script language="JavaScript">

<!--

<![CDATA[

document.write("<p>Texto de prueba</p>");

]]>

//-->

</script>

Hojas de estilo – XSL I

•eXtended Stylesheet Language

◦ El XSL es un lenguaje que nos permite definir una presentación o formato para un documento XML.

◦ Un mismo documento XML puede tener varias hojas de estilo XSL que lo muestren en diferentesformatos (HTML, PDF, RTF, VRML, PostScript, sonido, etc.).

◦ La aplicación de una hoja de estilo XSL a un documento XML puede ocurrir tanto en el origen (porejemplo, un servlet que convierta de XML a HTML para que sea

FCC-BUAP 20

Hojas de estilo – XSL II

◦ Básicamente, XSL es un lenguaje que define una transformación entre un documento XML de entrada, yotro documento XML de salida.

◦ Una hoja de estilo XSL es una serie de reglas que determinan cómo va a ocurrir la transformación.

◦ Cada regla se compone de un patrón (pattern) y una acción o plantilla (template).

FCC-BUAP 21

XSL = XSLT + Xpath•XSLT (XSL Transformations)

◦ Define las acciones o transformaciones a realizar.

◦ W3C Recommendation 16 noviembre 1999

◦ http://www.w3.org/TR/xslt

•Xpath

◦ Localización de elementos en el documento.

◦ W3C Recommendation 16 noviembre 1999

◦ http://www.w3.org/TR/xpath

FCC-BUAP 22

XSL = XSLT + Xpath•Esta familia está formada por tres lenguajes:

◦ XSLT (siglas de Extensible Stylesheet Language Transformations, lenguaje de hojas extensibles detransformación), que permite convertir documentos XML de una sintaxis a otra (por ejemplo, de un XMLa otro o a un documento HTML).

◦ XSL-FO (lenguaje de hojas extensibles de formateo de objetos), que permite especificar el formatovisual con el cual se quiere presentar un documento XML, es usado principalmente para generardocumentos PDF.

◦ Xpath o XML Path Language es una sintaxis (no basada en XML) para acceder o referirse a porciones deun documento XML.

FCC-BUAP 23

Un ejemplo simple de XSL I

FCC-BUAP 24

<?xml version=“1.0” encoding=“UTF-7”?>

<?xml-stylesheet href=“links1.xsl” type=“text/xsl”?>

<links>

<item href=“http://www.personal.com/asl” title=“Mi página personal”/>

<item href=“http://www.milenio.com” title=“Diario Milenio”/>

<item href=“http://www.losmaschingones.org” title=“Mi empresa”/>

<item href=“http://www.chingones.com” title=“Mi antigua empresa”/>

</links>

Un ejemplo simple de XSL II

FCC-BUAP 25

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">

<UL>

<xsl:for-each select="links/item">

<LI>

<A>

<xsl:attribute name="href">

<xsl:value-of select="./@href"/>

</xsl:attribute>

<xsl:value-of select="./@title"/>

</A>

</LI>

</xsl:for-each>

</UL>

</xsl:template>

</xsl:stylesheet>

Elementos XSLT I

•Es el elemento raíz de la hoja de estilo. Contiene elementos xml:template y xml:script.

•Define un patrón para un determinado conjunto de nodos de un cierto tipo o en un contextodeterminado.

•Indica al procesador que busque el template adecuado para el tipo y contexto de cada nodoseleccionado.

FCC-BUAP 26

<xsl:stylesheet> </xsl:stylesheet>

<xsl:template match=“pattern”> </xsl:template>

<xsl:apply-template select=“pattern”/>

Elementos XSLT II

•Inserta el valor del nodo seleccionado como texto.

•Crea un atributo y lo añade al elemento de salida.

•Crea un elemento con el nombre indicado. Esto es útil para evitar conflictos de nombres.

FCC-BUAP 27

<xsl:value-of select=“pattern”/>

<xsl:attribute name=“nombre”> valor </xsl:attribute>

<xsl:element name=“nombre”> </xsl:element>

Elementos XSLT III

•Repite un template de forma iterativa.

•Realiza un test, y ejecuta un template condicionalmente.

•Esta construcción permite realizar condiciones múltiples.

FCC-BUAP 28

<xsl:for-each order-by=“criterio” select=“pattern”>

<xsl:if test=“expresion booleana”> </xsl:if>

<xsl:choose>

<xsl:when test=" expresion1 "> ... </xsl:when>

<xsl:when test=" expresion2 "> ... </xsl:when>

...

<xsl:otherwise> ... </xsl:otherwise>

</xsl:choose>

Métodos en XSLT

•XSLT provee una serie de métodos que pueden ser llamados desde los elementos:

• <xsl:script>

• <xsl:eval>

•Checar la página:

http://msdn.microsoft.com/en-us/library/aa922808.aspx

FCC-BUAP 29