ESPECIFICACIÓN XML 1.0

36
ESPECIFICACIÓN XML 1.0 Alberto Gimeno Arnal [email protected] Área de Lenguajes y Sistemas Informáticos Dpto. de Informática e Ingeniería de Sistemas Universidad de Zaragoza

description

ESPECIFICACIÓN XML 1.0. Alberto Gimeno Arnal [email protected]. Área de Lenguajes y Sistemas Informáticos Dpto. de Informática e Ingeniería de Sistemas Universidad de Zaragoza. XML: Reglas. XML debe ser utilizable directamente sobre Internet. - PowerPoint PPT Presentation

Transcript of ESPECIFICACIÓN XML 1.0

Page 1: ESPECIFICACIÓN XML 1.0

ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal

[email protected]

Área de Lenguajes y Sistemas InformáticosDpto. de Informática e Ingeniería de Sistemas

Universidad de Zaragoza

Page 2: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 2

XML: Reglas.

1. XML debe ser utilizable directamente sobre Internet.2. XML debe soportar una amplia variedad de aplicaciones.3. XML debe ser compatible con SGML.4. Ha de resultar fácil escribir programas que procesen

documentos XML.5. El número de características opcionales en XML debe ser

mantenido en un mínimo, idealmente cero.6. Los documentos XML deben ser legibles por un ser

humano y razonablemente claros.7. El diseño de XML debe ser preparado rápidamente.8. El diseño de XML debe ser formal y conciso.9. Los documentos XML han de ser fáciles de crear.10. La brevedad en la marcación reviste mínima importancia.

Page 3: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 3

XML: Soporta.

• Etiquetas de elemento

• Instrucciones de procesamiento

• Declaraciones de tipos de documentos

• Referencia de entidades

• Comentarios

• Secciones marcadas

Page 4: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 4

XML: Estructura.<?xml version=“1.0” encoding=“iso-8859-1” standalone=“yes|no”?><!DOCTYPE documento SYSTEM "Prueba.dtd"><documento>

<titulo>Prueba

</titulo><contenido>

<parrafo><lista>

<elemento atributo=“valor1”>Primer elemento

</elemento><elemento atributo=“valor2”>

Segundo elemento</elemento>

</lista></parrafo>

</contenido></documento>

Page 5: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 5

XML: Elementos.

Page 6: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 6

XML: Instruc. de procesamiento.

Los documentos XML deben empezar con la directiva <?xml version=“1.0” ?>, opcionalmente:

standalone encoding

XML: Declaración de tipo de documento(DTD)

• Especificar el elemento raiz del documento.• Definir elementos, atributos y entidades especificas del

documento (DTD interno).• Identificar una DTD externa en el documento.

<!DOCTYPE documento SYSTEM "Prueba.dtd">

Page 7: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 7

XML: Referencias a entidades.

Por ejemplo, podrían ser:

<!ENTITY amp “&#38;”> <!– ampersand -->

<!ENTITY lt “&#60;”> <!– menor que -->

<!ENTITY euro “&#8364;”> <!– € -->

En el documento xml, bastará con poner &lt; o &euro;

Page 8: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 8

XML: Secciones CDATA.

Se evita el análisis sintáctico del texto:

<![CDATA[ <!ENTITY amp “&#38;”> <!– ampersand -->

<CODIGO_C>

*p=&qcampo;

a=(x<y)?33:44;

</CODIGO_C>

]]>

Page 9: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 9

XML: Espacios de nombre.Los espacios de nombres son un prefijo que ponemos a las etiquetas de XML para indicar a qué contexto se refiere la etiqueta en cuestión.•<pas:direccion>: para uso por los administrativos.•<pdi:direccion>: para uso por el profesorado.

Para usar los espacios de nombres en un documento, debemos declararlo previamente (xmlns):

<?xml version=“1.0” encoding=“iso-8859-1”?>

<personal

xmlns:alumn=“http://cps.unizar.es/PAS”

xmlns:pdi=“http://cps.unizar.es/PDI”

Page 10: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 10

XML: Modelar datos

Existen dos tipos:–Forma simple: DTD’s (internas /externas)<!DOCTYPE ElementoRaiz SYSTEM|PUBLIC RefDTDExterna [DeclacDTDInterna]>

–Forma extensa: XML Schema’s<Schema name=“esqAgenda” xmlns=“urn-microsoft-com:xml-data”>

<!– Contenido del esquema-->

</Schema>

Page 11: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 11

DTD: Estructura.<!ELEMENT agenda (contacto)+><!ELEMENT contacto (nombre, apellidos, direccion+, cp, ciudad,

provincia, tfno, correo)><!ATTLIST nombre clase (teoria | problemas | practicas) "problemas"><!ELEMENT tfno (movil, casa?)><!ELEMENT nombre (#PCDATA)><!ELEMENT apellidos (#PCDATA)><!ELEMENT direccion (#PCDATA)><!ELEMENT cp (#PCDATA)><!ELEMENT ciudad (#PCDATA)><!ELEMENT provincia (#PCDATA)><!ELEMENT movil (#PCDATA)><!ELEMENT casa (#PCDATA)><!ELEMENT correo (#PCDATA)>

Page 12: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 12

DTD: Símbolo Descripción

() Los paréntesis agrupan subetiquetas

<!ELEMENT Ingrediente (Cantidad,Item)>

, Ordenación exacta de los elementos

(Nombre, Descripcion?,

Ingredientes?, Instrucciones?)

| Uno sólo de los elementos indicados

(Cocer | Freir)

Si no indicamos nada los elementos aparecen una sola vez

(Cantidad, Item)

+ Una o más veces

Paso+

? Elemento opcional

Instrucciones?

* Cero o más veces

Ingrediente*

#PCDATA Parsed Character Data

<!ELEMENT Item (#PCDATA)>

Page 13: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 13

DTD: Tipos de Declaraciones.

• Tipos de elementos. (<!ELEMENT)– EMPTY– #PCDATA– ANY

• Listas de atributos. (<!ATTLIST)<!ATTLIST elemento atributo tipo-atributo valor-defecto>

• Entidades. (<!ENTITY)

• Notaciones. (<!NOTATION)

Page 14: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 14

DTD: Atributos.Valor Descripción

CDATA El valor son caracteres alfanuméricos

(v1 | v2 | ..) El valor será uno de la lista explicitada

ID El valor será un identificador único

IDREF El valor es el ID de otro elemento

IDREFS El valor es una lista de ID otros elementos

NMTOKEN El valor es un nombre XML válido

NMTOKENS El valor es una lista de nombres XML válidos

ENTITY El valor es una entidad

ENTITIES El valor es una lista de entidades

NOTATION El valor es el nombre de una notación

xml: El valor es un valor XML predefinido

Page 15: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 15

DTD: Atributos. Valores

Valor Descripción

valor El valor por defecto del atributo

#REQUIRED El valor del atributo debe aparecer obligatoriamente en el elemento

#IMPLIED El atributo no tiene por qué ser incluido

#FIXED valor El valor del atributo es fijo

Page 16: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 16

DTD. Referencias.

• Embebido o interna:<?xml version="1.0"?>

<!DOCTYPE Receta [<!ELEMENT Receta (Nombre, Descripcion?,

…….]>

• Enlace externo:<?xml version=“1.0”?>

<!DOCTYPE Receta SYSTEM “receta.dtd”><Receta>…….

Page 17: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 17

XML Schema. Ventajas sobre DTD

• XML Schema se basa en XML, lo cual permite validar los documentos.

• Soporta una serie de tipos de datos (int, float, boolean, date, etc.).

• Vocabulario abierto: permite definir nuevos tipos de datos y establecer nuevas relaciones de herencia.

• Soporta spacenames asociar nodos individuales con las declaraciones de tipos de esquema.

• Soporta grupos de atributos combinación de atributos.

Page 18: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 18

XML Schema: Estructura.<?xml version="1.0"?><Schema name=“esqPeliculas" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name=“titulo" content="textOnly"/> <ElementType name="writer" content="textOnly"/> <ElementType name="producer" content="textOnly"/> <ElementType name="director" content="textOnly"/> <ElementType name="actor" content="textOnly"/> <ElementType name="comments" content="textOnly"/> <AttributeType name=“genero" dt:type=“enumeration " dt:values="drama comedia aventuras sci-fi misterio horror romance documental" default="drama"/> <AttributeType name=“categoria" dt:type="enumeration" dt:values="G PG PG-13 R X" default="PG"/> <AttributeType name=“valoracion" dt:type="enumeration" dt:values="1 2 3 4 5" default="3"/> <AttributeType name=“año" dt:type="int"/> <ElementType name=“peliculas" content="eltOnly"> <element type=“peli" minOccurs="1" maxOccurs="*"/> </ElementType></Schema>

Page 19: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 19

XML Schema: Tipos de Declaraciones.

• Describe los tipos de datos en los elementos y los atributos. (<datatype)

• Describe tipos de elementos. (<ElementType)• Identifica un elemento que puede reproducirse

dentro de otro. (<element)• Organiza los elementos en grupos. (group)• Describe un tipo de atributo. (<AttributeType)• Identifica un atributo que puede reproducirse

dentro de otro. (<attribute)

Page 20: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 20

XML Schema: ElementType.

• name, nombre del elemento.• model • content, tipo de contenido (textOnly,

eltOnly, empty, mixed)• order, orden de los elementos secundarios

y grupos que hay en el elemento (one, seg, many)

• dt:type, tipo de elemento. (coincide con los tipos de datatype)

Page 21: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 21

XML Schema: AttributeType.

• name, nombre del tipo de atributo.

• dt:type, tipo de datos del atributo.

• dt:values, lista de los posibles valores del atributo (dt:type=“enumeration”)

• default.

• required.

Page 22: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 22

XML Schema: element/attribute.

• type, tipo del elemento/atributo. Debe ser el nombre de un tipo de elemento ya declarado.

• minOccurs, numero mínimo de veces que el elemento/atributo debe producirse.

• maxOccurs, numero máximo de veces que el elemento/atributo debe producirse

Page 23: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 23

XML Schema: Tipos de datos.

• Declaración al principio del documento XML Schema xmlns:dt

char boolean int float number

i1 fixed 14.4 ui1 bin.hex dateTime

i2 r4 ui2 bin.base64 dateTime.tz

i4 r8 ui4 date time

uuid uri time.tz

Page 24: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 24

Plantilla XSL: Estructura.<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">

<html><head><title>AGENDA XML</title></head><body >

<xsl:for-each select='agenda/contacto'><xsl:value-of select='nombre' />,<b><xsl:value-of select='apellidos' /></b> <br/> <b><xsl:value-of select='direccion'/></b> <br/><xsl:value-of select='cp'/><i><xsl:value-of select='ciudad'/></i> (<b><xsl:value-of select='provincia'/></b>) <br/>Tfno.:<xsl:value-of select='tfno/movil'/> - <xsl:value-of select='tfno/casa'/> <br/>E-mail: <xsl:value-of select='correo'/> <br/><hr />

</xsl:for-each ></body></html>

</xsl:template>

Page 25: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 25

XSLT: Tipos de elementos.

• xsl:value-of, insertar el valor de un elemento o atributo (select).

• xsl:if, establece una ramificación condicionada (match).

• xsl:for-each, bucle (select, order-by)

• xsl:apply-templates, aplica plantillas secundarias (select).

Page 26: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 26

XPath.

• Es un lenguaje no XML.• Proporciona una vía abstracta de dirigirse

a partes de documentos XML.• Sintaxis diseñada para ser usada con URI

y valores de atributos XML (máxima simplicidad).

• Organización del documento en árbol de nodos

• Recorre el árbol a través de expresiones.

Page 27: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 27

Árbol XPath:

• Nodos raíz.

• Nodos de elementos.

• Nodos de texto.

• Nodos de atributos.

• Nodos de espacios de nombres.

• Nodos de instrucciones de procesamiento.

• Nodos de comentarios.

Page 28: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 28

XPath: Tipos de datos

• mode-set, conjunto de datos.

• boolean, (true|false).

• number, número de coma flotante.

• string, cadena de texto.

Page 29: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 29

Vincular documentos: XLink y XPointer.

• XLink, determina el documento al que se desea enlazar. – type(locator, simple, extend, arc, group), href, from,

to, show, actuate, role, title.

• XPointer, marca el lugar exacto de dicho documento.– Rutas absolutas: Root(/), id(Name), here(), origin() – Rutas relativas: child, parent, descendant,

descendant-or-seft, ancestor, ancestor-or-seft, preceding-sibling, following-sibling, preceding, following, seft, attribute.

Page 30: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 30

XLink: Estructura.• Simple:<AUTOR xlink:href=“autores.xml#juan” xlink:show=“new”>

<NOMBRE>Juan Primero Segundo</NOMBRE></AUTOR>

• Extendido:<EDITOR_AUTOR xlink:extended>

<xlink:locator href=“#ana” id=“editor”/><xlink:locator href=“autores.xml#juan” id=“autor”/><xlink:arc from=“editor” to=“autor” show=“replace”/>

</EDITOR_AUTOR xlink:extended>

Page 31: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 31

Patrón XSL: Estructura.Search context

agenda.xmlQuery ./tfnoResult Set

<xql:result><tfno>56983265</tfno><tfno>58746912</tfno><tfno>65229105</tfno>

</xql:result>

Page 32: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 32

XSL: Cadenas de consulta.

• Jerárquicas:– Consultas primarias-secundarias, /– Ascendiente-Descendiente, //– Comodines, *

• Secuenciales:– Precedencias inmediatas, ;– Precedencias, ;;

• Localizar un atributo:– Devolver atributos, @– Filtrar, ‘contacto[@clase=‘practicas’]/nombre’

• Métodos: text(), value(), nodeType(), nodeName(), index(), end().

Page 33: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 33

XSL: Consultas.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">

<xsl:apply-templates select=‘//contacto'></xsl:template>

<xsl:template match=" contacto[@clase=‘practicas’]/nombre ">

<b><xsl:value-of select=‘nombre'/></b> <br/></xsl:template>

</xsl:stylesheet>

Page 34: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 34

Analizadores sintácticos: parser.

Validación de los documentos XML, interfaz (API) que proporciona llamadas a funciones y procedimientos que proporcionen métodos y mecanismos para manipular documentos XML, existen dos tipos:

•DOM, script’s (java, vb, c++, c#,…)

•SAX, JAVA.

Page 35: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 35

DOM: Modelo de Objeto de Documento.

• Interfaz (Document, DocumentFragment, Node, NodeList, NamedNodeMap, CharacterData, Attr, Element, Text)

• Nodos y secciones (CDATASection, Notation,

EntityReference, Entity, ProcessingInstruction)• Objetos.

– Métodos.– Atributos.

Page 36: ESPECIFICACIÓN XML 1.0

Alberto Gimeno Arnal XML 1.0 36

SAX: Simple API para XML.

• Parser.parser()/HandlerBase()

• Interfaz DocumentHandler

• Retrollamadas (elementos, documentos, texto)

• Procesamiento (instrucciones, plantillas)

• Objetos (ErrorHandler, InputSource, Locator)