XML y Bases de datos Modelado de datos XML usando DTDshp.fciencias.unam.mx/~alg/xmlbd/dtd.pdf ·...

Post on 17-Aug-2020

7 views 0 download

Transcript of XML y Bases de datos Modelado de datos XML usando DTDshp.fciencias.unam.mx/~alg/xmlbd/dtd.pdf ·...

XML y Bases de datosModelado de datos XML usando DTDs

Amparo Lopez Gaona

Agosto 2008

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 1 / 52

Documentos bien formados

Un documento bien formado es el que cumple con la especificacion XML,que dice que:

Empieza especificando que se trata de un documento XML.

Tiene un elemento raız.

Tiene nombres unicos de atributos.

El valor de cada atributo se especifica entre comillas.

No tiene marcas sin cerrar o mal cerradas.

Solo tiene caracteres UNICODE validos.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 3 / 52

... Documentos bien formados

<?xml version="1.0" encoding="ISO-8859-1"?><departamento><empleado id="J.P"><nombre>Juan Pardo</nombre><email>juan.pardo@yahoo.com</email>

</empleado>

<empleado id="B.S"><nombre>Benito Salas</nombre><email>Benito.Salas@yahoo.com</email>

</empleado>

<empleado id="A.M"><nombre>Alicia Mata</nombre><url href="http://www.yahoo.com/~amata/"/>

</empleado></departamento>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 5 / 52

... Documentos bien formados

<?xml version="1.0" encoding="ISO-8859-1"?><departamento><empleado id="J.P"><nombre>Juan Pardo</nombre><email>juan.pardo@yahoo.com</email1>

</empleado>

<empleado id="B.S"><nombre>Benito Salas</nombre><email>Benito.Salas@yahoo.com</email>

</empleado>

<empleado id="A.M"><nombre>Alicia Mata</nombre><url href="http://www.yahoo.com/~amata/"/>

</empleado></departamento>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 7 / 52

Documentos validos

Una de las innovaciones de XML es que permite especificar de maneradeclarativa la estructura o esquema del documento.Verificar que un documento cumpla con las especificaciones se denominavalidacion.La forma de definir esquemas es por medio de:

DTD (Document Type Definition). Esta especificado como parteestandar de XML.

Esquemas (XML Schema Definition XSD).

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 8 / 52

DTDs

La DTD (Document Type Definition) es una gramatica que especificacuales elementos pueden estar en un documento; para cada unoque elementos puede y debe contener y en cual orden.

Es una gramatica libre de contexto extendida. Pues no tiene sımbolosterminales.

Sea Σ un alfabeto finito de etiquetas. Una DTD consta de unconjunto de reglas de la forma e → r donde e ∈ Σ y r es unaexpresion regular sobre Σ.

De aquı que pueda usarse como estandar para intercambio dedocumentos si las partes se ponen de acuerdo.

Por ejemplo: estructuras moleculares, facturas, etc.

Los componentes que se definen en una DTD son: elementos,atributos, entidades, PCDATA y CDATA.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 9 / 52

Declaracion de elementos en una DTD

Todo elemento permitido en el documento debe estar declarado en laDTD.Sintaxis:

<!ELEMENT nombre contenido>

El nombre puede ser cualquier cadena, solo que no debe empezar con & nicon XML.

Contenido:

Sin contenido.

Solo texto.

Solo elementos.

Mixto.

Sin restricciones.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 10 / 52

Declaracion de elementos en una DTD

Todo elemento permitido en el documento debe estar declarado en laDTD.Sintaxis:

<!ELEMENT nombre contenido>

El nombre puede ser cualquier cadena, solo que no debe empezar con & nicon XML. Contenido:

Sin contenido.

Solo texto.

Solo elementos.

Mixto.

Sin restricciones.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 10 / 52

Declaracion de elementos en una DTD

Todo elemento permitido en el documento debe estar declarado en laDTD.Sintaxis:

<!ELEMENT nombre contenido>

El nombre puede ser cualquier cadena, solo que no debe empezar con & nicon XML. Contenido:

Sin contenido.

Solo texto.

Solo elementos.

Mixto.

Sin restricciones.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 10 / 52

Elementos vacıos

Como su nombre lo indica, no tienen contenido. Si tiene algunainformacion lo hara en sus atributos.Sintaxis:

<!ELEMENT nombre EMPTY>

Ejemplo de declaracion en la DTD:

<!ELEMENT url EMPTY>

Ejemplo de uso de elementos vacıos:

<url href="http://www.fciencias.unam.mx/~alg/"></url><url href="http://www.fciencias.unam.mx/~alg/"/>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 12 / 52

Contenido solo texto

Sintaxis:

<!ELEMENT nombre (#PCDATA)>

#PCDATA = (Parser Character Data)Ejemplo de declaracion en la DTD:

<!ELEMENT pais (\#PCDATA)>

Ejemplo de uso:

<pais>Mexico</pais>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 14 / 52

Contenido solo elementos

Sintaxis:

<!ELEMENT nombre modeloDeContenido>

El modeloDeContenido se forma escribiendo entre parentesis la lista de lossubelementos separados por comas.

Sin sımbolo, especifica que se debe usar una vez.

+ especifica el al menos una vez este elemento.

* especifica el uso de varias veces inclusive ninguna.

? especifica el uso o no del elemento.

| da la opcion de usar uno u otro elemento.

() para tratar como unidad un grupo de elementos.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 15 / 52

... Contenido solo elementos

Ejemplo de declaracion en la DTD:

<!ELEMENT NombreP (Nombre, ApellidoP, ApellidoM)>

<!ELEMENT NombreP (Nombre+, ApellidoP, ApellidoM?)>

<!ELEMENT resumen (educacion | experiencia)+, pasatiempos?, referencias*)>

Ejemplo de uso:

<nombreP><Nombre> Amparo </Nombre><ApellidoP> L’opez </ApellidoP><ApellidoM> Gaona </ApellidoM>

</nombreP>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 17 / 52

... Contenido solo elementos

Ejemplo de declaracion en la DTD:

<!ELEMENT NombreP (Nombre, ApellidoP, ApellidoM)>

<!ELEMENT NombreP (Nombre+, ApellidoP, ApellidoM?)>

<!ELEMENT resumen (educacion | experiencia)+, pasatiempos?, referencias*)>

Ejemplo de uso:

<nombreP><Nombre> Amparo </Nombre><ApellidoP> L’opez </ApellidoP><ApellidoM> Gaona </ApellidoM>

</nombreP>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 17 / 52

... Contenido solo elementos

Ejemplo de declaracion en la DTD:

<!ELEMENT NombreP (Nombre, ApellidoP, ApellidoM)>

<!ELEMENT NombreP (Nombre+, ApellidoP, ApellidoM?)>

<!ELEMENT resumen (educacion | experiencia)+, pasatiempos?, referencias*)>

Ejemplo de uso:

<nombreP><Nombre> Amparo </Nombre><ApellidoP> L’opez </ApellidoP><ApellidoM> Gaona </ApellidoM>

</nombreP>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 17 / 52

Contenido mixto

Los elementos que contienen texto y elementos se denominan de contenidomixto. Sintaxis:

<!ELEMENT nombre (#PCDATA | listaDeElementos)*>

Ojo: en la declaracion el #PCDATA debe ir primero.Limita los elementos en la lista pero no limita ni el orden ni el numero deveces en que debe aparecer.Ejemplo de declaracion en la DTD:<!ELEMENT envio (#PCDATA calleNum ciudad cp pais)>Ejemplo de uso:

<envio>Srita. Andrea L’opez<calleNum>Tlalcoligia 98</calleNum><ciudad> M’exico D.F.</ciudad> <cp>14440</cp><pais>M’exico</pais>

</envio>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 19 / 52

Contenido sin restriccion

Sintaxis:

<!ELEMENT nombre ANY>

Son como elementos de contenido mixto pero sin ningun control.De preferencia no usarlos.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 20 / 52

Declaracion de atributos en una DTD

La declaracion de todo atributo empieza con <!ATTLIST seguida de laespecificacion de:

El nombre del elemento al cual pertenece el atributo.

El nombre del atributo.

El tipo del atributo.

El valor por omision del atributo.

>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 21 / 52

Tipos de atributo

CDATA. Cadena de texto.

ID. Nombre unico, en el documento, entre los atributos.

IDREF. Nombre de atributo usado como valor de un atributo ID.

IDREFS. Lista de IDREF separados por espacios en blanco.

ENTITY. Nombre de una entidad.

ENTITIES. Lista de entidades separadas por espacios en blanco.

NOTATION. Nombre de una notacion.

enumeracion. Lista con los valores permitidos para ese atributo, cadauno separado por una barra vertical.

NMTOKEN. Cualquier cadena de uno o mas caracteres. A diferencia deun nombre XML, este puede empezar con un dıgito.

NMTOKENS. Una lista de nombres de tokens separados por espacios enblanco.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 22 / 52

Valor para el atributo

#REQUIRED. Se debe especificar valor para este atributo.

#IMPLIED. El valor para este atributo es opcional.

#FIXED "valor". El atributo siempre tiene el valor especificado.

"valor" es el valor por omision de este atributo.

Ejemplo

<!ATTLIST jugador equipo CDATA #REQUIRED><!ATTLIST jugador posicion (1B | 2B | 3B | SS | pitcher | catcher

| jardinero) "pitcher">

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 24 / 52

DTD para bibliografıas

<!ELEMENT Bibliography (Book | Paper)*><!ELEMENT Book (Title, Authors, Publisher?, Remark?)><!ATTLIST Book ISBN CDATA #REQUIRED Edition CDATA #IMPLIED><!ELEMENT Paper (Title, Authors, Year?, Pages?, URL?)><!ELEMENT Title (#PCDATA)><!ELEMENT Authors (Author+)><!ELEMENT Publisher (#PCDATA)><!ELEMENT Remark (#PCDATA)><!ELEMENT Author (#PCDATA | (FirstName, LastName))><!ELEMENT FirstName (#PCDATA)><!ELEMENT LastName (#PCDATA)><!ELEMENT Year (#PCDATA)><!ELEMENT URL (#PCDATA)><!ELEMENT Pages (First, Last)><!ELEMENT First (#PCDATA)><!ELEMENT Last (#PCDATA)>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 26 / 52

DTD para bibliografıas

Existen dos formas de especificar en el documento XML que se va a usaruna DTD:

Incluir la DTD en el documento:<!DOCTYPE elementoRaiz [...]>

Hacer referencia a la DTD desde el documento:<!DOCTYPE elementoRaiz SYSTEM “URI de referencia”>Ejemplos:

<?xml version = "1.0" standalone = "no"?><!doctype Bibliografia system "Bibliografia.dtd">

<!doctype Bibliografia system"http://www.fciencias.unam.mx/dtds/Bibliografia.dtd">

Un documento bien formado que no incluye una DTD no puede ser valido.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 28 / 52

Ejemplo de un documento XML

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

<Bibliography>

<Book ISBN="ISBN-0-13-035300-0" Edition="2nd">

<Title>A First Course in Database Systems</Title>

<Authors>

<Author>

<FirstName>Jeffrey</FirstName>

<LastName>Ullman</LastName>

</Author>

<Author>

<FirstName>Jennifer</FirstName>

<LastName>Widom</LastName>

</Author>

</Authors>

<Publisher> Addison-Wesley </Publisher>

</Book>

<Book ISBN="ISBN-0-13-031995-3" >

<Title>Database Systems: The Complete Book</Title>

<Authors>

<Author> Hector Garcia-Molina </Author>

<Author>

<FirstName>Jeffrey</FirstName>

<LastName>Ullman</LastName>

</Author>

<Author>

<FirstName>Jennifer</FirstName>

<LastName>Widom</LastName>

</Author>

</Authors>

<Remark>

Amazon.com says: Buy this book bundled with "A First Course,"

it’s a great deal!

</Remark>

</Book>

</Bibliography>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 30 / 52

Referencias

<?xml version="1.0" standalone="no"?>

<!DOCTYPE Bibliografia SYSTEM "Bibliografia.dtd">

<Bibliography>

<Book ISBN="ISBN-0-13-035300-0" Edition="2nd"> ... </Book>

<Book ISBN="ISBN-0-13-031995-3">

<Title>Database Systems: The Complete Book</Title>

<Remark>

Amazon.com says: Buy this book bundled with

<BookRef book="ISBN-0-13-035300-0"></BookRef>, It’s a great deal!

</Remark>

</Book>

<Paper Ident = "Abi99" Referencias="ISBN-0-13-035300-0">

<Author>

<Firstnombre> Serge </Firstnombre> <Lastnombre> Abiteboul </Lastnombre>

</Author>

<Title> Quering semistructured data </Title>

</Paper>

<Paper Ident = "Via01" Referencias="Abi99,ISBN-0-13-035300-0"> ... </Paper>

</Bibliography>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 32 / 52

La DTD debe cambiar.

<!DOCTYPE Bibliografia<!ELEMENT Bibliography (Book | Paper)*><!ELEMENT Book (Title, Authors, Publisher?, Remark?)><!ATTLIST Book ISBN ID #REQUIRED Edition CDATA #IMPLIED><!ELEMENT Paper (Title, Authors, Year?, Pages?, URL?)><!ATTLIST Paper Ident ID #REQUIRED Referencias IDREFS #REQUIRED><!ELEMENT Title (#PCDATA)><!ELEMENT Authors (Author+)><!ELEMENT Remark (#PCDATA | BookRef)*><!ELEMENT BookRef EMPTY><!ATTLIST BookRef book IDREF #REQUIRED><!ELEMENT Author ( (FirstName, LastName) | #PCDATA)><!ELEMENT FirstName (#PCDATA)><!ELEMENT LastName (#PCDATA)><!ELEMENT Year (#PCDATA)><!ELEMENT URL (#PCDATA)><!ELEMENT Pages (First, Last)><!ELEMENT First (#PCDATA)><!ELEMENT Last (#PCDATA)>>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 34 / 52

Entidades

Se utilizan para definir variables/macro.Sintaxis:

<!ENTITY nombre definicion>

Ejemplo de declaracion:

<!ENTITY alg "&#169;2008 Amparo L\’opez Gaona ">

Ejemplo de uso:

.... &alg; ...

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 36 / 52

Atributos vs Elementos

Ventajas de los atributos:

Pueden limitar su valor a una lista predefinida.

Pueden tener un valor predefinido.

Son concisos.

Son mas faciles de usar que los elementos.

Desventajas de los atributos:

No son convenientes para cadenas grandes de texto.

No pueden contener informacion anidada.

No pueden omitirse los espacios en blanco en su valor.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 37 / 52

Ejercicio

Crear la DTD

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE departamento SYSTEM "departamento.dtd"><departamento><empleado id="J.P"><nombre>Juan Pardo</nombre><email>Juan.Pardo@yahoo.com</email>

</empleado><empleado id="B.S"><nombre>Benito Salas</nombre><email>Benito.Salas@yahoo.com</email>

</empleado><empleado id="A.M"><nombre>Alicia Mata</nombre><url href="http://www.yahoo.com/~amata/"/>

</empleado></departamento>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 39 / 52

Solucion

<!ELEMENT departamento (empleado)*><!ELEMENT empleado (nombre, (email | url))><!ATTLIST empleado id CDATA #REQUIRED><!ELEMENT nombre (#PCDATA)><!ELEMENT email (#PCDATA)><!ELEMENT url EMPTY><!ATTLIST url href CDATA #REQUIRED>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 41 / 52

Otro Ejercicio

<ciudades><ciudad> <sol><nombre>Acapulco</nombre> <salida>5:23</salida><min>34</min> <puesta>6:41</puesta><max>19</max> </sol><tiempo valor ="Soleado"/> </ciudad><mar>poco oleaje</mar><sol> <ciudad><salida>6:08</salida> <nombre>M\’exico</nombre><puesta>7:05</puesta> <min>25</min>

</sol> <max>14</max></ciudad> <tiempo valor="Lluvia ligera"/>

<sol><ciudad> <salida>7:01</salida><nombre>Mazatl\’an</nombre> <puesta>8:06</puesta><min>32</min> </sol><max>20</max> </ciudad><tiempo valor ="Soleado"/> ...<mar>Poco oleaje</mar> </ciudades>Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 43 / 52

Solucion

<!ELEMENT ciudades (ciudad)*><!ELEMENT ciudad (nombre, min, max,tiempo, mar? sol)><!ELEMENT nombre (#PCDATA)><!ELEMENT min (#PCDATA)><!ELEMENT max (#PCDATA)><!ELEMENT tiempo EMPTY><!ATTLIST tiempo valor (Soleado | LluviaLigera | Nublado) "Soleado"><!ELEMENT mar (#PCDATA)><!ELEMENT sol (salida, puesta)><!ELEMENT salida (#PCDATA)><!ELEMENT puesta (#PCDATA)>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 45 / 52

Esquemas

Un esquema es una forma de definir la estructura de los documentos XML.Al igual que las DTDs los esquemas describen elementos y su modelo decontenido.Los esquemas difieren de las DTD en que:

Se escriben como documentos XML.

Son completamente compatibles con uso de espacios de nombre.

Pueden asignar a un elemento un tipo de datos como entero, fecha,etc.

La validacion del documento incluye ademas de la estructura delelemento su contenido.

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 46 / 52

DTD para ordenes de compra

<!ELEMENT Orden (Cliente, Producto+, Subtotal, IVA, Embarque, Total)>

<!ELEMENT Cliente (#PCDATA)>

<!ATTLIST Cliente id ID #REQUIRED>

<!ELEMENT Producto (Nombre, Cantidad, Precio, Descuento?, EnviarA, Mensaje?)>

<!ELEMENT Nombre (#PCDATA)>

<!ELEMENT Cantidad (#PCDATA)>

<!ELEMENT Precio (#PCDATA)>

<!ATTLIST Precio moneda (USD | CAN | GBP) #REQUIRED>

<!ELEMENT Descuento (#PCDATA)>

<!ELEMENT EnviarA (Destinatario?, Calle+, Ciudad, Estado, CP)>

<!ELEMENT Destinatario (#PCDATA)>

<!ELEMENT Calle (#PCDATA)>

<!ELEMENT Ciudad (#PCDATA)>

<!ELEMENT Estado (#PCDATA)>

<!ELEMENT CP (#PCDATA)>

<!ELEMENT Mensaje (#PCDATA)>

<!ELEMENT Subtotal (#PCDATA)>

<!ATTLIST Subtotal moneda (USD | CAN | GBP) #REQUIRED>

<!ELEMENT IVA (#PCDATA)>

<!ATTLIST IVA moneda (USD | CAN | GBP) #REQUIRED tasa CDATA "0.0">

<!ELEMENT Embarque (#PCDATA)>

<!ATTLIST Embarque moneda (USD | CAN | GBP) #REQUIRED

metodo (USPS | UPS | Overnight) "UPS">

<!ELEMENT Total (#PCDATA)>

<!ATTLIST Total moneda (USD | CAN | GBP) #REQUIRED>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 48 / 52

Esquema para ordenes de compra (dividirlo en 2 0 3frames)

<?xml version="1.0"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="Orden">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Cliente">

<xsd:complexType>

<xsd:simpleContent>

<xsd:extension base="xsd:string">

<xsd:attribute name="id" type="xsd:ID"/>

</xsd:extension>

</xsd:simpleContent>

</xsd:complexType>

</xsd:element>

<xsd:element name="Producto" maxOccurs="unbounded">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Nombre" type="xsd:string"/>

<xsd:element name="Cantidad"

type="xsd:positiveInteger"/>

<xsd:element name="Precio" type="TipoMoneda"/>

<xsd:element name="Descuento" type="xsd:decimal" minOccurs="0"/>

<xsd:element name="EnviarA">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Destinatario" type="xsd:string"

minOccurs="0" maxOccurs="unbounded"/>

<xsd:element name="Calle" type="xsd:string"/>

<xsd:element name="Ciudad" type="xsd:string"/>

<xsd:element name="Estado" type="xsd:string"/>

<xsd:element name="CP" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:element name="Mensaje" type="xsd:string" minOccurs="0"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:element name="Subtotal" type="TipoMoneda"/>

<xsd:element name="IVA">

<xsd:complexType>

<xsd:simpleContent>

<xsd:extension base="TipoMoneda">

<xsd:attribute name="tasa" type="xsd:decimal"/>

</xsd:extension>

</xsd:simpleContent>

</xsd:complexType>

</xsd:element>

<xsd:element name="Embarque">

<xsd:complexType>

<xsd:simpleContent>

<xsd:extension base="TipoMoneda">

<xsd:attribute name="Metodo" type="xsd:string"/>

</xsd:extension>

</xsd:simpleContent>

</xsd:complexType>

</xsd:element>

<xsd:element name="Total" type="TipoMoneda"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:complexType name="TipoMoneda">

<xsd:simpleContent>

<xsd:extension base="xsd:decimal">

<xsd:attribute name="Moneda" type="xsd:string"/>

</xsd:extension>

</xsd:simpleContent>

</xsd:complexType>

</xsd:schema>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 50 / 52

DTD para los esquemas (dividirlo en 2 0 3 frames)

<!ENTITY %datatypes "(entity |entities |enumeration |id |idref |idrefs |

nmtoken |nmtokens |notation |string |bin.base64 |binhex |boolean |

char |date |dateTime |dateTime.tz | fixed.14.4 |float |int |number |

time |time.tz |i1 |i2 |i4 |r4 |r8 |ui1 | ui2 | ui4 | uri |uuid)" >

<!ELEMENT Schema (AttributeType | ElementType | description )*>

<!ATTLIST Schema name CDATA #IMPLIED

xmlns:dt CDATA #FIXED>

<!ELEMENT AttributeType (datatype | description )*>

<!ATTLIST AttributeType

name ID #REQUIRED

default CDATA #IMPLIED

dt:type %datatypes; #IMPLIED

dt:values CDATA #IMPLIED

requiered (yes | no) #IMPLIED

xmlns:dt CDATA #FIXED>

<!ELEMENT ElementType (datatype |description |AttributeType |attribute|

element |group)*>

<!ATTLIST ElementType name ID #REQUIRED

model (open | closed) #IMPLIED

content (empty |textOnly |eltOnly |mixed) #IMPLIED

order (one | seq | many) #IMPLIED

dt:type %datatypes; #IMPLIED

dt:values CDATA #IMPLIED

requiered (yes | no) #IMPLIED

xmlns:dt CDATA #FIXED>

<!ELEMENT description (#PCDATA)>

<!ELEMENT datatype (description)*>

<!ATTLIST datatype dt:type %datatypes; #IMPLIED

xmlns:dt CDATA #FIXED>

<!ELEMENT attribute (description)*>

<!ATTLIST attribute

type IDREF #REQUIRED

default CDATA #IMPLIED

requiered (yes | no) "no">

<!ELEMENT element (description)*>

<!ATTLIST element

type IDREF #REQUIRED

minOcurrs CDATA #IMPLIED

maxOcurrs CDATA #IMPLIED>

<!ELEMENT group (group |element | description)*>

<!ATTLIST group

minOcurrs CDATA #IMPLIED

maxOcurrs CDATA #IMPLIED

order (one | seq | many) #IMPLIED>

Amparo Lopez Gaona () XML y Bases de datos Modelado de datos XML usando DTDs Agosto 2008 52 / 52