ESPECIFICACIÓN XML 1.0 - Universidad de Zaragoza

Download Report

Transcript ESPECIFICACIÓN XML 1.0 - Universidad de Zaragoza

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.
1.
2.
3.
4.
XML debe ser utilizable directamente sobre Internet.
XML debe soportar una amplia variedad de aplicaciones.
XML debe ser compatible con SGML.
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.
Alberto Gimeno Arnal
XML 1.0
2
XML: Soporta.
•
•
•
•
•
•
Etiquetas de elemento
Instrucciones de procesamiento
Declaraciones de tipos de documentos
Referencia de entidades
Comentarios
Secciones marcadas
Alberto Gimeno Arnal
XML 1.0
3
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>
Alberto Gimeno Arnal
XML 1.0
4
XML: Elementos.
Alberto Gimeno Arnal
XML 1.0
5
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">
Alberto Gimeno Arnal
XML 1.0
6
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;
Alberto Gimeno Arnal
XML 1.0
7
XML: Secciones CDATA.
Se evita el análisis sintáctico del texto:
<![CDATA[
<!ENTITY amp “&#38;”> <!– ampersand -->
<CODIGO_C>
*p=&qcampo;
a=(x<y)?33:44;
</CODIGO_C>
]]>
Alberto Gimeno Arnal
XML 1.0
8
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”
Alberto Gimeno Arnal
XML 1.0
9
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-microsoftcom:xml-data”>
<!– Contenido del esquema-->
</Schema>
Alberto Gimeno Arnal
XML 1.0
10
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)>
Alberto Gimeno Arnal
XML 1.0
11
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)
Alberto Gimeno Arnal
+
Una o más veces
?
Elemento opcional
Instrucciones?
*
Cero o más veces
Ingrediente*
#PCDATA
Parsed Character Data
XML 1.0
<!ELEMENT Item (#PCDATA)>
Paso+
12
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)
Alberto Gimeno Arnal
XML 1.0
13
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
Alberto Gimeno Arnal
XML 1.0
14
DTD: Atributos. Valores
Valor
valor
Descripción
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
El valor del atributo es fijo
#FIXED valor
Alberto Gimeno Arnal
XML 1.0
15
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>
…….
Alberto Gimeno Arnal
XML 1.0
16
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.
Alberto Gimeno Arnal
XML 1.0
17
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>
Alberto Gimeno Arnal
XML 1.0
18
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)
Alberto Gimeno Arnal
XML 1.0
19
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)
Alberto Gimeno Arnal
XML 1.0
20
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.
Alberto Gimeno Arnal
XML 1.0
21
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
Alberto Gimeno Arnal
XML 1.0
22
XML Schema: Tipos de datos.
• Declaración al principio del documento XML
Schema  xmlns:dt
char
boolean
i1
float
number
fixed 14.4 ui1
bin.hex
dateTime
i2
r4
ui2
bin.base64 dateTime.tz
i4
r8
ui4
date
uuid
Alberto Gimeno Arnal
int
uri
time
time.tz
XML 1.0
23
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>
Alberto Gimeno Arnal
XML 1.0
24
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).
Alberto Gimeno Arnal
XML 1.0
25
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.
Alberto Gimeno Arnal
XML 1.0
26
Á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.
Alberto Gimeno Arnal
XML 1.0
27
XPath: Tipos de datos
•
•
•
•
mode-set, conjunto de datos.
boolean, (true|false).
number, número de coma flotante.
string, cadena de texto.
Alberto Gimeno Arnal
XML 1.0
28
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.
Alberto Gimeno Arnal
XML 1.0
29
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>
Alberto Gimeno Arnal
XML 1.0
30
Patrón XSL: Estructura.
Search context
agenda.xml
Query
./tfno
Result Set
<xql:result>
<tfno>56983265</tfno>
<tfno>58746912</tfno>
<tfno>65229105</tfno>
</xql:result>
Alberto Gimeno Arnal
XML 1.0
31
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().
Alberto Gimeno Arnal
XML 1.0
32
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>
Alberto Gimeno Arnal
XML 1.0
33
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.
Alberto Gimeno Arnal
XML 1.0
34
DOM: Modelo de Objeto de Documento.
• Interfaz
(Document,
DocumentFragment, Node,
NodeList,
NamedNodeMap,
CharacterData,
Attr,
Element, Text)
• Nodos y secciones (CDATASection,
EntityReference, Entity, ProcessingInstruction)
• Objetos.
Notation,
– Métodos.
– Atributos.
Alberto Gimeno Arnal
XML 1.0
35
SAX: Simple API para XML.
• Parser.parser()/HandlerBase()
• Interfaz DocumentHandler
• Retrollamadas (elementos, documentos,
texto)
• Procesamiento (instrucciones, plantillas)
• Objetos (ErrorHandler, InputSource, Locator)
Alberto Gimeno Arnal
XML 1.0
36