0% encontró este documento útil (0 votos)
23 vistas39 páginas

Guía de XML para Administradores

Cargado por

inboxcolon
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
23 vistas39 páginas

Guía de XML para Administradores

Cargado por

inboxcolon
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Administración de una base de datos

Módulo 2

Administración de sistemas
gestores de bases de datos
2. Almacenamiento de la información
 Organización Secuencial
 Organización Directa
 XML
XML
Características

 Es un subconjunto de SGML, con los mismos objetivos pero sin su complejidad


 Diseñado para ser compatible con SGML. Todo XML es un doc. SGML pero no a la
inversa
 XML es un estándar abierto del W3C: garantía de calidad del proceso de desarrollo
 Al igual que SGML es un metalenguaje
 Se denomina extensible porque cada usuario puede crear su propio lenguaje para el
formato de datos y documentos, su propio vocabulario, según sus necesidades,
siguiendo las reglas de XML
 XML es potente, permite separar contenido y estructura: Un mismo documento
puede tener diferentes presentaciones, MARCADO ESTRUCTURAL
 Se puede procesar de forma automática por ser de tipo estructural. (Parser XML)
 Componentes de un documento XML:
 elementos <nombre de elemento> elemento </nombre de elemento>
 Un elemento puede contener subelementos. Es decir se agrupa la información en
jerarquías.
 Los elementos pueden contener atributos.
 Un atributo es una pareja (nombre, valor) que permite dar cierta información sobre un
elemento. <libro edición=”primera”>
XML
Componentes

 Declaración XML 1.0: es la especificación base. Describe la sintaxis que deben seguir
los documentos, las reglas que deben cumplir los analizadores de xml, etc.

 Documento Muestra XML

 El DTD (Document Type Definition): define cómo son los documentos XML utilizados en
un cierto dominio de aplicación

 etiquetas que se pueden utilizar;


 contenido de cada elemento, es decir, qué elementos pueden formar parte del
contenido de una etiqueta y si el elemento puede contener texto o no;
 atributos de cada elemento, opcionales o obligatorios.
XML
Declaración XML <?xml ?>

 No es obligatoria
 No es una instrucción de procesamiento técnicamente, aunque tiene la misma forma
 Especifica parámetros a través de 3 atributos:

 Version: la versión del estándar XML utilizada en el documento. Normalmente es 1.0,


aunque podría ser 1.1. Como 1.1 es compatible con 1.0, per no al revés, lo normal es
que sea 1.0 para que todos los procesadores XML lo entiendan (compatibles con 1.1 y
no compatibles con 1.1)

 Encoding: indica al analizador la codificación de caracteres utiliza el documento XML.


Si se omite, se sobreentiende UNICODE

 Standalone: Indica si la DTD es interna o externa. Es opcional y su omisión se


interpreta con el valor no

 No: puede que se le requiera a una aplicación leer una DTD externa para
entender partes del documento

 Yes: para documentos que no tienen DTD, o que tienen DTD si ésta no cambio el
contenido del documento, o si la DTD es interna al documento XML
XML
Ejemplo Declaración XML

<?xml version="1.0" encoding="ASCII" standalone="yes"?>


<persona>
Javier Pérez
</persona>
XML
Muestra XML (documento XML)

 Es una instancia que contiene información de intercambio entre dos sistemas

 El primer elemento que contiene al resto es el elemento raíz

 Las etiquetas son el componente XML que permite definir los elementos que conformarán
un documento XML de la siguiente forma: <etiqueta>Valor</etiqueta>

 Los elementos se formarán usando una etiqueta inicio y otra fin. En medio de las etiquetas
se representará el contenido a almacenar en ese elemento. Este contenido a su vez
puede englobar otros elementos.

 Pueden existir elementos vacíos, sin contenido

Sintaxis: <elemento/>, equivalente a <elemento></elemento>

 Los nombres de los elementos deben empezar por una letra o bien por el carácter “_” o “:”
siempre y cuando el principio no contenga la palabra xml en cualquier combinación posible
de mayúsculas y minúsculas. Los nombres solo pueden contener letras, números y los
caracteres “_”, “.”, “:”.

 Documento XML se puede abrir y editar con cualquier editor de texto. Son etiquetas

 Documento XML está compuesto por los elementos definidos en el DTD, si éste existe
XML
Muestra XML (documento XML)
OJO, es CASE SENSITIVE. Distingue mayúsculas/minúsculas.

<persona> ≠ <Persona> ≠ <PERSONA>

 Los elementos pueden contener atributos, los cuales se especifican en la etiqueta de


inicio del elemento. El objetivo de los atributos es poder proporcionar información adicional
sobre un elemento concreto. Sintaxis: <elem1 atrib1=“val1” atrib2=“val2”>Valor</elem1>

 El uso de un número excesivo de atributos puede provocar que el documento XML sea
menos legible, mas difícil de mantener y difícilmente extensible

Ejemplos XML incorrectos Ejemplos XML sintácticamente correcto


<nombre>Pablo</finNombre> <alumno>
</apellido>Pérez<apellido> <nombre>Pablo</nombre>
<varon> <apellido> Pérez</apellido>
<xMl_direccion> </xMl_direccion> <telefono tipo=“fijo”>915555555</telefono>
<!notas></!notas> <direccion> </direccion>
<persona></PERsona> </varon>
</alumno>
XML
Muestra XML (documento XML)
A1.- Indica los elementos y atributos que haya:
<persona sexo=“hombre” id=“ricky”>
<nombre>Ricky Martin</nombre>
<email>ricky@[Link]</email>
<relacion amigo-de=“leatitia”>
</persona>

Caracteres especiales. Existen algunos símbolos reservados del lenguaje con lo que para
poder representarlos es necesario usar unos códigos. Se definen usando el símbolo &
seguido de una palabra clave y terminados por punto y coma
Código Carácter

&quot; “
&amp; &
&apos; `
&lt; <
&gt; >

Los comentarios se indican con la marca “<!--” y una marca final “-->” . Igual que en HTML
Las secciones CDATA permiten marcar un texto para que éste sea procesado por el parser,
es decir no serán analizados sintácticamente
XML
Muestra XML (documento XML)
Ejemplo de muestra XML con comentarios, CDATA y caracteres especiales.

Las dos definiciones del elemento 321 serían interpretadas de la misma forma
<alumnos>
<![CDATA[
<alumno id=“321”>
<nombre>Luis</nombre>
</alumno>
]]>
</alumnos>

<alumnos>
&lt;alumno id=”321”&gt;
&lt;nombre&gt;Luis&lt;/nombre&gt;
&lt;/alumno&gt;

</alumnos>
XML
Muestra XML (documento XML)
 Elemento raíz es el inicio del documento XML, tras la definición = <mensaje>

 Elementos hijos de <mensaje> = remite, destinatario, asunto, texto (hermanos entre sí)

 Todos los elementos tienen un padre, salvo el raíz (o “elemento documento”), que
contiene a todos los demás

 En XML se prohíben etiquetas superpuestas

<remite> <nombre>Alfredo Reino</remite></nombre> está prohibido

Por todo esto, los documentos XML tiene estructura de árbol


XML
Ejemplo Muestra\Documento XML
<mensaje>
<remite>
<nombre>Alfredo Reino</nombre>
<email>alf@[Link]</email>
</remite>
<destinatario>
<nombre>Bill Clinton</nombre>
<email>president@[Link]</email>
</destinatario>
<asunto>Hola Bill</asunto>
<texto>
<parrafo>¿Hola qué tal? Hace
<enfasis>mucho</enfasis>
que no escribes. A ver si llamas y quedamos para tomar algo.
</parrafo>
</texto>
</mensaje>
A2.- Visita la Web oficial de XML : [Link]
A3.- Busca por Internet documentos XML que contengan secciones CDATA
XML
Ejercicios Muestra\Documento XML

1.- Definir un documento XML que premita representar un libro. Deberá contener los siguientes
elementos típicos como “título”, “autores”, editorial”, fecha de publicacion, isbn, etc.

2.- A partir del documento anterior escribir un documento XML que contenga al menos 10 entradas
de libros.

3.- Buscar un validador XML online (por ejemplo el de W3C [Link] introducir el
documento generado y comprobar que el documento esté bien formado.

Otro validador : [Link]


XML
DTD (Document Type Definition)
 Fija la estructura que deben tener los documentos de muestra XML con los que dos
sistemas se intercambian datos
 Es la definición de cómo se construye un documento XML
 Establece que elementos son aceptados y en qué posiciones deben estar
 Cuando se define un DTD se establece una relación de qué léxico es el que se espera y
qué reglas debe cumplir nuestro lenguaje
 Antes de crear un documento XML se deberá analizar qué elementos y etiquetas se van a
necesitar
 Define cómo son los documentos XML utilizados en un cierto dominio de aplicación
 Elemento raiz del documento
 Etiquetas que se pueden utilizar;
 Contenido de cada elemento, es decir, qué elementos pueden formar parte del
contenido de una etiqueta y si el elemento puede contener texto o no;
 Atributos de cada elemento, opcionales o obligatorios
 El DTD puede formar parte del documento XML, pero lo normal es que esté en un
documento aparte, para que pueda ser referenciado por los diferentes documentos XML
que utilizan ese DTD
 En el documento XML se indica que DTD utiliza. Se indica en la cabecera
 Los procesadores XML rechazan los documentos XML que no estén bien formados
como mínimo
XML
DTD (Document Type Definition)
 Para asociar documento XML con un DTD se requiere una declaración “!DOCTYPE” en la
cabecera del documento XML:

<!DOCTYPE elemento_raiz SYSTEM “ubicación_DTD">

• Si el documento XML cumple las reglas de XML (sin DTD), -> documento XML es
“bien formado”
• Si además el doc. XML sigue las reglas definidas en un DTD-> documento XML es
«válido»

 Se puede definir los DTDs de dos modos:


 En un fichero externo al documento XML

<!DOCTYPE persona SYSTEM “[Link]

 Incluso puede ser compartida por varios documentos XML

 Se pueden utilizar referencias locales si el documento XML y la DTD están en la


misma ubicación:

<!DOCTYPE persona SYSTEM “/dtds/[Link]”>


XML
DTD (Document Type Definition)
 En el propio documento XML, dentro de la declaración de tipo

<?xml version=“1.0”?>
<!DOCTYPE persona[
<!ELEMENT persona (nombrecompleto, profesion*)>
<!ELEMENT nombrecompleto (nombre, apellido)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellido (#PCDATA)>
<!ELEMENT profesion (#PCDATA)>
]>
XML
Palabras clave de un DTD
 ELEMENT: define elementos y sus hijos. Pueden contener:
 [Link] combinación de elementos conocidos sería válido
 EMPTY. Para elementos que deban estar vacíos
 Elementos
 Combinado
 PCDATA – caracteres. Indica que los caracteres de ese elemento serán analizados por un parser

 ATTLIST: define los atributos de un elemento. Son características asociadas a los


elementos que tienen un valor. Tipos:
 CDATA – Character DATA. Podrá tener cualquier carácter
 ID – atributo que tenga un número único, referenciado por un atributo de otro elemento que sea tipo
IDREF
 IDREF – referencia a un atributo tipo ID
<!ELEMENT enlace EMPTY>
<!ATTLIST enlace destino IDREF #REQUIRED>
<!ELEMENT capitulo (parrafo)*>
<!ATTLIST capitulo referencia ID #IMPLIED>

En el XML, una etiqueta <enlace destino=“seccion-3”> hace referencia a un <capítulo


referencia=“sección-3”>, y un procesador XML lo podría convertir en un hipervínculo.
 NMTOKEN – similar a CDATA pero sólo admite caracteres para nombrar cosas (números,
letras, puntos, guiones subrayados y dos puntos) ,
 ENTITY
 NOTATION – permite usar un valor declarado como NOTATION en el DTD, para especificar
el formato de datos no XML (imágenes, MIME, etc.)
XML
Inconvenientes de un DTD
 Ocurrencias en DTDs
 „‟ : indica que aparece obligatoriamente una vez. Es el caso inicial en cuanto se declara un hijo al
elemento
 „+‟ : indica que puede haber una o más ocurrencias del elemento
 „*‟ : indica que puede haber cero o más ocurrencias del elemento
 „?‟ : indica que puede haber cero o una ocurrencia del elemento
 <!ELEMENT capitulo (parrafo)>
 <!ELEMENT capitulo (parrafo)+>
 <!ELEMENT capitulo (parrafo)*>
 <!ELEMENT capitulo (parrafo)?>

 Los DTDs presentan como desventajas:


 No son ampliables
 Solo se puede asociar un dtd por documento
 No funcionan bien con los espacios de nombres (namespaces).
 Son una recomendación W3C para proporcionar elementos y atributos con nombre
único en una instancia XML, porque una instancia XML puede tener elementos o
atributos de varios vocabularios XML
 Emplea notación EBNF (Extended Backus-Naur Format) que no es intuitiva
XML
Ejemplo1 de un DTD

<!ELEMENT mensaje (remite, destinatario, asunto, texto)>


<!ELEMENT remite (nombre, email)>
<!ELEMENT destinatario (nombre, email)>
<!ELEMENT asunto (#PCDATA)>
<!ELEMENT texto (parrafo)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT parrafo (#PCDATA)>
XML
Ejemplo2 de un DTD

<!ELEMENT DOCUMENTO (titulo, contenido, autor) >


<!ELEMENT TITULO (#PCDATA)>
<!ELEMENT CONTENIDO (capitulo*) >
<!ELEMENT CAPITULO (subtitulo, parrafo*) >
<!ELEMENT SUBTITULO (#PCDATA)>
<!ELEMENT PARRAFO (#PCDATA)>
<!ELEMENT AUTOR (#PCDATA)>
XML
Ejemplo3 de un DTD
 Ejemplo de atributos en un documento XML
DTD
<!ELEMENT persona (#PCDATA)>
<!ATTLIST persona nacido CDATA
fallecido CDATA>
Documento XML
<persona nacido=”1915-04-03” fallecido=”2007-01-22”>
Javier Pérez
</persona>

En ocasiones puede ser más interesante que elementos hijos se escriban como atributos de
una entidad padre, en lugar de ser ellos mismos entidades

<!ELEMENT mensaje (remite, destinatario, asunto, texto)>


<!ELEMENT remite (EMPTY)>
<!ATTLIST remite nombre CDATA #REQUIRED
email CDATA #REQUIRED>
<!ELEMENT destinatario (EMPTY)>
<!ATTLIST destinatario nombre CDATA #REQUIRED
email CDATA #REQUIRED>
<!ELEMENT asunto (#PCDATA)>
<!ELEMENT texto (parrafo)>
XML
Otros elementos de un DTD
 ENTITY  definir entidades que se usen tanto en el XML como en la propia
DTD, en base a sustituciones. Deben ser elementos o atributos XML definidos

<!ENTITY quot "&#34;">


<!ENTITY amp "&#38;#38;">

 NOTATION contenido externo no XML y la aplicación que lo gestiona

<!NOTATION gif SYSTEM "image/gif">


<!NOTATION jpg SYSTEM "image/jpeg">
<!NOTATION png SYSTEM "image/png">
XML
Ejercicios DTDs
 Generar ficheros XML a partir de los “DTDs Examples” definidos en
[Link]

 Crear una biblioteca de libros en un documento XML. Crear un DTD que


almacene los siguientes campos
 A) Código de libro

 B) Título

 C) Editorial

 D) Edición

 E) ISBN

 F) Número de páginas

 G) Autor
XML
Espacio de nombres (namespaces)
 Indica los elementos y tipos de datos usado en el schema
 Objetivos:
 Es habitual que se desee usar uno o varios módulos desarrollados por terceras personas. Esta
modularidad permite al programador poder reutilizar código, no obstante en algunos casos es posible
que colisione con los nombres de nuestros elementos. Para solucionarlo se utilizan los namespaces

 Distinguir elementos y atributos de distintos vocabularios con distintos significados que pueden
compartir el mismo nombre

 Agrupar todos los elementos y atributos relacionados con una sola aplicación XML para que el SW los
reconozca con facilidad

 Se añade un prefijo a cada elemento y atributo


 Cada prefijo se le asigna un URI (xmlns:prefijo), llamado nombre de espacio de
nombres:
 Existen URI predeterminados para los elementos que no tengan un prefijo definido. Para esto se usa el
atributo xmlns

 Los elementos con el mismo URI pertenecen al mismo espacio de nombres


 Los NS pueden distinguir entre sí elementos con el mismo nombre, a través de la
asignación de elementos y atributos a los URI
XML
Espacio de nombres (namespaces)
 Generalmente, todos los elementos de una aplicación XML se asignan a
una URI, y todos los de otra aplicación XML a otra URI
 Elementos iguales asignados a URIs distintos, son tipos diferentes

 Elementos iguales asignados a los mismos URIs, son iguales

 Los URIs dividen los elementos y atributos en conjuntos inconexos

 Son independientes de las DTD‟s, y se pueden usar con documentos tanto


válidos como no válidos

 Se utiliza la etiqueta xmlns para definir el espacio de nombres que se utiliza


<table xmlns:w3="[Link] <table xmlns:h="[Link]

<w3:name>African Coffee Table</w3:name> <h:table>


<w3:width>80</w3:width> <h:tr>
<w3:length>120</w3:length> <h:td>Apples</h:td>
</w3:table> <h:td>Bananas</h:td>
</h:tr>
</h:table>
XML
XML Schemas (XSD)
 XSD (XML Schema Definition)
 Contiene la descripción formal del contenido del documento XML válido
 Es una recomentación del W3C (Recommendation on 2 May 2001)
 Los esquemas solucionan las limitaciones de los DTDs:
 Ampliables por ser notación XML
 Herramientas maduras
 Soporte DOM
 Permite tipos de Datos
 Permite Herencia
 Múltiples vocabularios mediante espacio de nombres

 Sintaxis propia y distinta a los DTD‟s. el lenguaje de XSD es un lenguaje


derivado de XML
 Si un documento W3C cumple las restricciones del esquema, es un documento
válido. Si no lo cumple, pero sí las reglas de etiquetas mínimas de XML, será
bien formado
XML
XML Schemas (XSD)
 La forma de asociar un documento de schema con un documento de
instancia (documento XML que sigue un esquema) a través de dos vías:
 Atributo xsi:schemaLocation contiene los espacios de nombres
usados dentro de un elemento y las URL de los esquemas con los que
se validan los elementos y atributos en esos espacios de nombres
 Atributo xsi:noNamespaceSchemaLocation, que contiene la URL
para el esquema usado para validar elementos que no hay en ningún
espacio de nombres. Es local
 Básicamente la estructura del esquema:
 Declaraciones: se describe el contenido de los elementos y atributos
del documento
 Definiciones: Se crean nuevos tipos básicos o Complejos
 Tipos Basicos: string, boolean, float, date, decimal, hexbinary
 Tipos Complejos
XML
XML Schemas (XSD)
 Permiten mejorar las limitaciones de las DTDs
 Tipos de datos simples y complejos. Con esquemas se permite tipos simples
integrados (string, integer, decimal y dateTime).
 Derivación y herencia de tipo
 Limitaciones de ocurrencia de elementos. Restricciones más explicitas del
número y secuencia de los elemento hijos.
 Declaraciones de elementos y atributos conocedores del espacio de nombres.

 Ejemplo de documento de instancia XML

<?xml version=”1.0”?>
<nombrecompleto>Javier Perez</nombrecompleto>

 Ejemplo del esquema para ese documento


<?xml version=”1.0”?>
<xs:schema xmlns:xs=“[Link]
<xs:element name=“nombrecompleto“ type=“xs:string“/>
</xs:schema>
XML
XML Schemas (XSD)
 Si el esquema del ejemplo anterior se almacenara en un fichero [Link], y
el elemento nombrecompleto no se encuentra en ningún espacio de nombre
(caso contrario al ejemplo anterior), tendríamos que utilizar el atributo
xsi:noNamespaceSchemaLocation en el documento de instancia para decirle
con que esquema comparar el elemento nombrecompleto

<?xml version=”1.0”?>
<nombrecompleto xmlns:xsi=”[Link]
xsi:noNamespaceSchemaLocation=“[Link]“>Javier
Perez</nombrecompleto>

 Todo documento de esquema tiene un elemento raiz <xs:schema …>, que


contiene declaraciones para todos los elementos y atributos del documentos de
instancia válido
 Los elementos de declaran con <xs:element name=… type=…>, donde name
y tape son atributos
XML
Elementos Simples (XSD)

Elemento XSD XML


Simple
xs:string <xs:element name=“nombre” type=“xs:string”> <nombre>Javier Toledano</nombre>

xs:date <xs:element name=“FechaNac” type=“xs:date”> <FechaNac>1979-02-04</FechaNac>


<FechaNac>1979-02-04+01:00</FechaNac>

xs:time <xs:element name=“hora” type=“xs:date”> <hora>[Link]</hora>


<hora>[Link]+01:00</hora>
xs:decimal <xs:element name=“precio” type=“xs:decimal”> <precio>1205.74</precio>
<precio>-1205.74</precio>
xs:integer <xs:element name=“vueltas” type=“xs:integer”> <vueltas>1205</vueltas>
<vueltas>-1205</vueltas>
xs:boolean <xs:element name=“pagado” type=“xs:boolean”> <pagado>true</pagado>
<pagado>false</pagado>

xs:hexBinary <xs:element name=“imagen” type=“xs:hexBinary”> Entre las etiquetas va una codificación binaria
xs:base64Binary <xs:element name=“foto” type=“xs:base64Binary”> en hexadecimal o base64. Se utiliza para
almacenar documentos o formatos binarios

xs:positiveInteger <xs:element name=“vueltas” type=“xs:integer”> <vueltas>1205</vueltas>


XML
Elementos Simples (XSD)
 Establecer un conjunto de elementos simples para almacenar la información de
una escuela. Los datos a almacenar son : código de alumno, nombre, apellido1,
apellido2, DNI, Fecha de Nacimiento, curso y cuota pagada (boolean)
 <xs:element name=“codigo” type=“xs:integer”/>
 <xs:element name=“nombre” type=“xs:string”/>
 <xs:element name=“apellido1” type=“xs:string”/>
 <xs:element name=“apellido2” type=“xs:string”/>
 <xs:element name=“dni” type=“xs:string”/>
 <xs:element name=“fechaNacimiento” type=“xs:date”/>
 <xs:element name=“curso” type=“xs:integer”/>
 <xs:element name=“cuotaPagada” type=“xs:boolean”/>

 Si se quiere indicar que todo alumno tiene la cuota sin pagar, se define
cuotaPagada de la siguiente manera:
 <xs:element name=“cuotaPagada” type=“xs:boolean” default=“false”/>

 En cambio si lo que se quiere es que tenga un valor fijo siempre sería :


 <xs:element name=“cuotaPagada” type=“xs:boolean” fixed=“false”/>
XML
Atributos (XSD)
 Son complementos de información que se pueden asignar a un elemento
declarado
Sintaxis: <xs:attribute name=“nombre_atributo” type=“tipo_atributo”> donde
name y type tienen el mismo uso que en los elementos

Atributo XSD XML


xs:attribute name <xs:attribute name=“curso” type=“integer”/> <curso letra=“A”>1</curso>
<xs:attribute name=“letra” type=“string” use=“required”/>
XML
Restricciones (XSD)
 En algunos momentos puede ser importante establecer un rango de valores en
los que un elemento puede moverse, establecer restricciones sobre la longitud
del contenido de un elemento o incluso restricciones asociadas al contenido que
almacena el elemento
Restricción Tipo Descripción XSD
Restricción
xs:minInclusive Rango de Valores Alumnos comprendidos <xs:element name=“edad”>
entre 16 y 24 años <xs:simpleType>
xs:maxInclusive
<xs:restriction base=“xs:integer>
<xs:minInclusive value=“16”/>
<xs:maxInclusive value=“24”/>
Serán válidos todos
xs:minExclusive
aquellos que sean </xs:restriction>
xs:maxExclusive menores o mayores que el </xs:simpleType>
indicado </xs:element>

xs:pattern value Rango de Valores Letras de cursos <xs:attribute name=“letra” type=“letrasCursos”>


comprendidos entre la A y <xs:simpleType name=“letrasCursos”/>
la D <xs:restriction base=“xs:string>
Equivale al restriction <xs:pattern value=“[A-D]”/>
enumeration </xs:restriction>
</xs:attribute>
XML
Restricciones (XSD)
Restricción Tipo Descripción XSD
Restricción
xs:length Longitud fija Longitud fija de 10 posiciones <xs:element name=“dni”>
xs:maxLength <xs:simpleType>
<xs:restriction base=“xs:string>
xs:minLength
<xs:length value=“10”/>
</xs:restriction>
</xs:simpleType>
</xs:element>

xs:whiteSpace Asociado al Definir el comportamiento que <xs:element name=“direccion”>


debe tener el procesador XML
Preserve: mantiene los espacios en contenido <xs:simpleType>
blanco que se almacenen o parser cuando se encuentra
incluyendo tabuladores, salto de un espacio en blanco <xs:restriction base=“xs:string>
página y retornos de carro
<xs:whiteSpace value=“preserve”/>
Collapse: borra todos los espacios
en blanco incluyendo tabuladores, </xs:restriction>
salto de página y retornos de carro
</xs:simpleType>
Replace: sustitye todos los espacios
en blanco, tabuladores, etc. por un </xs:element>
único espacio en blanco

xs:totalDigits Número de Número exacto de cifras <xs:simpleType name="DecimalNumber">


permitidas. Debe ser mayor
cifras <xs:restriction base="xs:decimal">
que cero
<xs:fractionDigits value="17"/>
xs:fractionDigits
<xs:totalDigits value="18"/>
</xs:restriction> </xs:simpleType>
XML
Elementos Complejos e indicadores (XSD)
 Elementos que se componen de otros elementos y/o que pueden contener
atributos propios
Elementos Tipo Descripción XSD
xs:complexType Elemento • Elementos que contienen otros <xs:element name="person">
<xs:complexType>
complejo elementos en su interior
<xs:choice>
• Elementos que contienen <xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
atributos en su interior </xs:choice>
</xs:complexType>
• Elementos que contienen
</xs:element>
atributos y elementos en su
interior

xs:choice Indicador de Define un elemento person que <xs:element name="person">


<xs:complexType>
orden debe contener o bien employee o
<xs:choice>
member <xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>

xs:all Indicador de En el ejemplo se indica que los <xs:element name="person">


<xs:complexType>
orden elementos firstname y lastname
<xs:all>
pueden aparecer en cualquier <xs:element name="firstname" type="xs:string"/>
orden pero ambos elementos <xs:element name="lastname" type="xs:string"/>
</xs:all>
deben aparecer una SOLA vez
</xs:complexType>
</xs:element>
XML
Indicadores (XSD)
Elementos Tipo Descripción XSD
xs:sequence Indicador de Permite especificar el orden en <xs:element name="personinfo">
<xs:complexType>
orden el que deben aparecer los <xs:sequence>
elementos hijos <xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

xs:minOccurs Indicadores Permiten conocer cuantas <xs:element name="pets">


<xs:complexType>
de veces pueden repetirse cada <xs:sequence minOccurs="0" maxOccurs="unbounded">
xs:maxOccurs
ocurrencia elemento hijo <xs:element name="dog" type="xs:string"/>
<xs:element name="cat" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

xs:group name Indicadores Facilitan la manera de <xs:group name=“grupoCoche”>


<xs:sequence>
de grupo establecer un conjunto de <xs:element name=“marca” type=“xs:string”/>
xs:group ref <xs:element name=“modelo” type=“xs:string”/>
elementos asociados entre si. <xs:element name=“caballos” type=“xs:integer”/>
Ej. Características de un </xs:sequence>
</xs:group>
coche para almacenar marca, <xs:element name=“coche” type=“TipoCoche”/>
modelo y caballos. <xs:complexType name=“TipoCoche”>
<xs:sequence>
<xs:element name=“codigo” type=“xs:integer”/>
<xs:group ref=“grupoCoche”/>
<xs:element name=“combustible” type=“xs:string”/>
</xs:sequence>
</xs:complexType>
XML
Ejemplo de definición con XSD Schema
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="[Link]
<xsd:element name="cuentas">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Sociedad" type="xsd:string"/>
<xsd:element name="Periodo" type="xsd:date”/>
<xsd:element name="Debe" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

 Podemos ver como en ambos casos se inician las declaraciones indicando la versión de XML que
se va a utilizar y la codificación que se usa. Estos dos campos son necesarios para poder
interpretar el esquema. Además, en la siguiente línea de código podemos ver como se redirecciona
al usuario a la página que ofrece las pautas de creación de XML Schema en las que se basará la
descripción del esquema.
 El elemento raíz se llama "Cuentas" y tiene tres hijos (elementos anidados). Los hijos son
"Sociedad","Periodo" y "Debe". El hecho de que estén agrupados en una secuencia indica que los
elementos deben aparecer en orden, es decir, primero "Sociedad", luego el “Periodo" y por último
el "Debe".
XML
Casos prácticos XML y XSD
 Ejemplo de base de datos de SMS
<?xml version="1.0"?>
<xs:schema version="1.0“ xmlns:xs=”[Link]
<xs:element name="BDsms">
<xs:complexType>
<xs:sequence>
<xs:element name="sms" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="telefono" type="xs:string"/>
<xs:element name="fecha" type="xs:string"/>
<xs:element name="hora" type="xs:string"/>
<xs:element name="mensaje" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

 Realizar el XML asociado con 10 entradas y validarlo con un procesador XML


XML
Casos prácticos XML y XSD
Una comunidad de propietarios, en su Junta General Ordinaria decide crear un sistema de
almacenamiento de la información para almacenar datos de la comunidad. De esta manera
podrán realizar las gestiones de manera más ágil y con un estándar de comunicación con
el resto de acreedores y deudores de la comunidad. Los campos a almacenar son los
siguientes:
Código de vecino. Alfanumérico de 10 posiciones
Nombre
Apellidos
Piso. Numérico mayor que -1
Letra. Alfanumérico con posibles valores de la A a la Z
Código de cuenta corriente
Cargo (Presidente, Vicepresidente, Secretario, Vocal, Ninguno)
Se pide lo siguiente:
- Generar un esquema que defina esta estructura de información: [Link]
- Generar un documento XML con al menos 10 vecinos. Dos de ellos tendrán el cargo de
Presidente y Vicepresidente (al menos): [Link]
XML
Instrucciones de procesamiento
 Para pasar información a determinadas aplicaciones que leen el documento XML
 Sintaxis
<?destino...
?>
Destino es la aplicación para la que se destina esta instrucción, o un identificador para la instrucción de
procesamiento concreta
 La instrucción tiene el formato apropiado para la aplicación a la que se dirige
 Ejemplo: instrucción para los motores de búsqueda en la red, indicando si deben indexar el documento y si
tienen que seguir los vínculos del documento:
<?robots index=“yes” follow=“no” ?>

 Las instrucciones de procesamiento no son elementos del documento XML. Por ello, igual que
los comentarios, no afectan al árbol y pueden aparecer en cualquier parte del documento
 Ejemplo más común

<?xml-stylesheet href=”[Link]” type=”text/css” ?>  Para añadir hojas de estilo a los documentos
<persona>
Javier Pérez
</persona>

También podría gustarte