XML
(Extensible Markup Language)
Kostadin Koruchev
Es necesario utilizar el soporte que acompaña
estos apuntes
XML – Conjunto
Elementos de XML www.w3.org/XML o
www.w3.org/TR







XML – definición y sintáxis
XML DTD (Document Type Definition)
XML XSL (XSLT, XSLFo)
XML Xpath
XML Xlink
Libro de texto: Elliotte Rusty Harold, W. Scott
Means, “XML in a Nutshell”, O’Reilly
Estos dispositivos se ven en conjunto con los
ejemplos. xx1?.xml
WELL FORMED XML (XML formado)
XML – lenguaje de
representación de árboles
XML:


Se trata de
XML
atributos <?xml version="1.0" >
Raiz
<write-xml>
CD // duracion
<CD duration="2134">
obligatoria
 flavor (JAZZ)
<flavor>jazz</flavor>
 performer (L.Amstrong)
<performer>L.Ams.</performer>
 producer (EMI)
<producer>EMI</producer>
marcos
 contents
<contents>
 song // duracion
<song duration="310">
 composer (L.A.)
<composer name="Harry W." />
 tittle (“On the ..)
<title>Chick to chick</title>
 song
</song>
....
</contents>
CD
</CD>
...º
</write-xml>
<!-- How to comentarios -->
XML – Sintaxis
Elementos:
<?xml version="1.0" >
<write-xml>
 <tag>cont</tag>
<CD duration="2134">
 Empty tag <tag/>
<flavor>jazz</flavor>
 Atributos en “...” o ‘...’.
<performer>L.Ams.</performer>
<producer>EMI</producer>
Comentarios <!-- ... -->
<contents>
Directivas de
<song duration="310">
procesamiento
<composer name="Harry W." />
<?name text ?>
<title>Chick to chick</title>
Secuencias de escape
</song>
&lt;
</contents>
CDATA
</CD>
 <[CDATA[ ... ]]>
</write-xml>
<!-- How to comentarios -->
 Elementos




WELL FORMED XML (XML formado)
XML Imponer Restricciones
La sintaxis no es suficiente. No todos los tipos
de datos valen para todos los elementos.
 Uno puede dar por ejemplo “tipo de voz a una productora de CDs”.
XML formateado necesita restricciones –
descripción de que tipo de datas hay en cada
marco.
DTD proporciona una posibilidad simple, pero
incompleta.

Los documentos que cumplen DTD son VALIDOS.
XML Schema – posibilidad completa.
XML DTD 1
Descripción de cada elemento y attributo.

Ver hojas de fichero fuente xx11.xml
 Solo un DOCTYPE por fichero.
Ejemplo:
<!DOCTYPE cd-s [
<!ELEMENT cd-s (cd*)>
<!ELEMENT contents (song+) >
<!ELEMENT song (author?,name) >
<!ELEMENT name (#CDATA)>
<!ELEMENT author ANY>
<!ELEMENT xs-or-ys (x|y)* >
<!ATTRLIST cd duration PCDATA #REQUIRED
id
ID #REQUIERED>
]>
<?xml version="1.0" >
<cd-sl>
<cd duration="2134" id=“_2134" >
<flavor>jazz</flavor>
<performer>L.Ams.</performer>
<producer>EMI</producer>
<contents>
<song duration="310">TEXT
<composer name="H. W." />
<title>Chick to chick</title>
</song>
</contents>
</cd>
</cd-s>
<!-- How to comentarios -->
DTD:Descripción de Elementos 1
<!ELEMENT name
<?xml version="1.0" >
contentspec>
<cd-sl>
Decir: <title> es texto:
<cd duration="2134" id=“_2134" >
<!ELEMENT title (#CDATA)>
<flavor>jazz</flavor>
Decir: El contenido son una o
<performer>L.Ams.</performer>
mas canciones.
<producer>EMI</producer>
<!ELEMENT contents (song+)>
<contents>
Decir: cd-s son cero o mas cd:
<song duration="310">TEXT
<!ELEMENT cd-s (cd*)>
<composer name="Harry W." />
El elemento compositor no
<title>Chick to chick</title>
tiene contenido (solo
</song>
atributos)
</contents>
<!ELEMENT composer EMPTY>
</cd>
</cd-s>
<!-- How to comentarios -->
DTD:Descripción de Elementos 2
<!ELEMENT name contentspec>
<?xml version="1.0" >
El elemento cd esta compuesto <cd-sl>
de flavor o instrument;
<cd duration="2134" id=“_2134" >
performer, producer y contents
<flavor>jazz</flavor>
en este orden. Performer no
es obligatorio:
<performer>L.Ams.</performer>
<!ELEMENT cd
<producer>EMI</producer>
((flavor|instrument),
<contents>
performer?,
<song duration="310">TEXT
producer,contents)>
<composer name="Harry W." />
Song contiene cualquier cosa:
<!ELEMENT song ANY>
<title>Chick to chick</title>
OJO – efectivamente no hay
</song>
restricciones.
</contents>
Un poco mas restrictivo: song
</cd>
es una mezcla de texto,
</cd-s>
<composer> y <title> (cont.
mixto):
<!-- How to comentarios -->
<!ELEMENT song
(#PCDATA|composer|title)*>
DTD:Descripción de Elementos 3
De modo formal (Definición de XML):







[45]
[46]
[47]
[48]
[49]
elementdecl ::= <!ELEMENT Name contentspec >
contentspec ::= EMPTY | ANY | Mixed | children
children ::= (choice | seq) (?|*|+)?
cp
::= (Name|choice|seq) (?|*|+)?
choice
::= ( cp( | cp)+ )
e.g. ( cp | cp | … | cp )
[50] seq
::= ( cp( , cp)* )
e.g. (cp,cp, … ,cp)
[51] Mixed
::= ( #PCDATA (S? | Name)* )*
e.g. ( #PCDATA | Name | … | Name )*
DTD gre
Declaracion
<element 2>
veces:
R?
R*
R+
R1|R2|…|Rn
R1, R2, …, Rn
#PCDATA
EMPTY
(#PCDATA e*)*
ANY
Significado
Justo uno elemento2
Zero o una R
Zero o más R
Una o más R
Una de R
1 or R 2 or … R n
Secuensia de R’s, ordenados
Texto
Empty element
Mixed Content – Contenido mixto
Cualquier cosa
DTD: Atributos 1
Ejemplos:
<?xml version="1.0" >
<cd-sl>
Decir: cd tiene atributo duration y id,
<cd duration=“_2134"
obligatorios y id es etiqueta:
id="_2134" >
<!ATTLIST cd duration CDATA #REQUIRED
...
id
ID
#REQUIRED>
...
Decir: composer tiene atributo
<a-cd ref="_2134”
name, no obligatorio:
href=“mpg://song.cc/s1.mp3”
<!ATTLIST cd name CDATA #IMPLIED>
type=“mp3”
Decir: a-cd tiene atributo
refxml=“_23-45z”/>

ref
referencia a cd;
...

href
referencia externa y

type
uno de au,mp3,wav (enumeracion)
<song duration="310">

refxml algo que cumple las reglas de nombre XML:
<composer name="H.W."/>
<!ATTLIST a-cd ref IDREF #REQUIRED>
...
<!ATTLIST a-cd type (au mp3 wav)
...
#REQ UIRED
href ENTITY
#REQUIRED
refxml NMTOKEN #IMPLIED>
DTD: Atributos 2
De modo formal según la definición de XML:
[52]
[53]
[54]
[55]
[56]
AttlistDecl
AttDef
AttType
StringType
TokenType
::=
::=
::=
::=
::=
|
|
|
|
|
[57]
[58]
[59]
[60]
EnumType
NotationType
Enumeration
DefaultDecl
::=
::=
::=
::=
<!ATTLIST NameEl AttDef* >
NameAt AttType DefaultDecl
StringType|TokenType|EnumType
CDATA
ID
IDREF
| IDREFS
ENTITY
ENTITIES
NMTOKEN
NMTOKENS
NotationType | Enumeration
NOTATION ( Name(| Name)* )
( Nmtoken (| Nmtoken)* )
#REQUIRED | #IMPLIED | #FIXED
DTD ATTRLIST TokenType
Tipo
ID
IDREF
IDREFS
ENTITY
ENTITIES
CDATA
NMTOKEN
NMTOKENS
NOTATION
Enumeration
Significado
Token unico -- etiqueta
Referencia a ID token
Referencia a multiples ID tokens
Referencia externa (image, video, …)
Referencias externas
Texto
Nombre xml
Nombres xml
Datos no XML
Enumeracion
DTD: Entity, Notation
ENTITY Se utilizan para:


Datos no XML
Macros
 <!ENTITY mm "Multimedia">
... Esto es uso de &mm; ...

Include
 <!ENTITY file1 SYSTEM “chap1.xml">
... Incluir un fichero &file1; ...
NOTATION se utilizan como macros.

Ejemplo:
<!NOTATION L SYSTEM “Lunes”>
<!NOTATION M SYSTEM “Martes”>
...
<!NOTATION V SYSTEM “Viernes”>
<!ATTLIST fecha dia-s NOTATION (L| M | ... | V )
Mas detalles – ver la definición de XML.
Espacios de nombres (Namespace)
“titulo” puede significar titulo de cd, titulo de pagina
WEB etc. Se necesita diferenciar
<?xml version="1.0" >
<?xml version="1.0" >
<cd-s>
<cd:cd-s xmlns:cd=“http://www.ii.uam.es/cds”
xmlns:xsl=
<cd duration="2134" id=“_2134" >
<flavor>jazz</flavor>
<performer>L.Ams.</performer>
“http://www.w3c.org/1999/XSL/Transform”>
< xsl:template match="cd" >
< cd:cd duration="2134" id=“_2134" >
<producer>EMI</producer>
< cd:flavor>jazz</ cd:flavor>
<contents>
< cd:performer>L.Ams.</ cd:performer>
<song duration="310">TEXT
<composer name="Harry W." />
<title>Chick to chick</title>
</song>
</contents>
< cd:producer>EMI</ cd:producer>
< cd:contents>
< cd:composer name="Harry W." />
</cd:song>
</cd:contents>
</cd>
</cd:cd>
</cd-s>
</xsl:template>
</cd:cd-s>
Espacios de nombres 2
Espacio de nombres por defecto e.g. cd:

Normal:
<cd:cd-s xmlns:cd=“http://www.ii.uam.es/cds”
xmlns:xsl=“http://www.w3c.org/1999/XSL/Transform”>
< xsl: template match="cd" >
< cd:cd duration="2134" id=“_2134" > ...

Por defecto:
<cd-s xmlns=“http://www.ii.uam.es/cds”
xmlns:xsl=“http://www.w3c.org/1999/XSL/Transform”>
< xsl: template match="cd" >
< cd duration="2134" id=“_2134" >


No muy compatible con DTD.
URI-URL
...
Descargar

XML