Parar la represión en las Normales
eXtensible Markup Language XML.Dr. Ivo H. Pineda Torres
Facultad de Ciencias de la Computación Benemérita Universidad Autónoma de
Puebla
Xtensaible Markup Language
Aunque a primera vista, un documento XML puede parecer similar a HTML, hay una diferencia principal.
Un documento XML contiene datos que se autodefinen,
exclusivamente. Un documento HTML contiene datos mal definidos, mezclados con elementos de formato. En XML se separa el contenido de la presentación de forma total.
Cambios en XML
• No predefine tags como HTML, tu los creas y en el momento que se necesiten.
• Es más estricto que HTML
Tags no predefinidos
<precio moneda="MnX"> 500.00 <\precio>
<toc xlink:href="/newsletter">Pineapplesoft Link</toc>
El primer tag no tiene equivalente en HTML y aunque el segundo puede tenerlo se puede simular usando una comobinación de marcas de tabla, enlaces y tipo de letra.
Asi podrá ser
<TABLE> <TR>
<TD><!-- main text here --></TD>
<TD><A HREF="/newsletter"><B>Pineapplesoft Link</B></A></TD> </TR>
</TABLE>
Esta es la razón de X
Por eso estipo de escritura es extensible, tu creas lo que necesitas. Pero
1. ¿Cómo sabe el navegador que <toc> es equivalente a una combinación de tabla, enlace y tipo de letra.?
2. R: Para esto se usa la hoja de estilos.
3. ¿Se pueden commparar diferentes precios?
4. R: Uso de DOM permite hacerlo, (no comas ansias)
5. que tal con el uso de los navegadores actuales como el Chrome, Mozilla, Rekong, Opera,etc.
6. R: no tiene problemas de compatibilidad con las nuevas generaciones de browsers.
7. ¿Como se simplifica el mantenimiento de los sitios web???
8. R: Te permite concentrarte en aspectos de estabilidad para tus documentos.
Esta es la razón de X
Por eso estipo de escritura es extensible, tu creas lo que necesitas. Pero
1. ¿Cómo sabe el navegador que <toc> es equivalente a una combinación de tabla, enlace y tipo de letra.?
2. R: Para esto se usa la hoja de estilos.
3. ¿Se pueden commparar diferentes precios?
4. R: Uso de DOM permite hacerlo, (no comas ansias)
5. que tal con el uso de los navegadores actuales como el Chrome, Mozilla, Rekong, Opera,etc.
6. R: no tiene problemas de compatibilidad con las nuevas generaciones de browsers.
7. ¿Como se simplifica el mantenimiento de los sitios web???
8. R: Te permite concentrarte en aspectos de estabilidad para tus documentos.
Esta es la razón de X
Por eso estipo de escritura es extensible, tu creas lo que necesitas. Pero
1. ¿Cómo sabe el navegador que <toc> es equivalente a una combinación de tabla, enlace y tipo de letra.?
2. R: Para esto se usa la hoja de estilos.
3. ¿Se pueden commparar diferentes precios?
4. R: Uso de DOM permite hacerlo, (no comas ansias)
5. que tal con el uso de los navegadores actuales como el Chrome, Mozilla, Rekong, Opera,etc.
6. R: no tiene problemas de compatibilidad con las nuevas generaciones de browsers.
7. ¿Como se simplifica el mantenimiento de los sitios web???
8. R: Te permite concentrarte en aspectos de estabilidad para tus documentos.
Esta es la razón de X
Por eso estipo de escritura es extensible, tu creas lo que necesitas. Pero
1. ¿Cómo sabe el navegador que <toc> es equivalente a una combinación de tabla, enlace y tipo de letra.?
2. R: Para esto se usa la hoja de estilos.
3. ¿Se pueden commparar diferentes precios?
4. R: Uso de DOM permite hacerlo, (no comas ansias)
5. que tal con el uso de los navegadores actuales como el Chrome, Mozilla, Rekong, Opera,etc.
6. R: no tiene problemas de compatibilidad con las nuevas generaciones de browsers.
7. ¿Como se simplifica el mantenimiento de los sitios web???
8. R: Te permite concentrarte en aspectos de estabilidad para tus documentos.
Esta es la razón de X
Por eso estipo de escritura es extensible, tu creas lo que necesitas. Pero
1. ¿Cómo sabe el navegador que <toc> es equivalente a una combinación de tabla, enlace y tipo de letra.?
2. R: Para esto se usa la hoja de estilos.
3. ¿Se pueden commparar diferentes precios?
4. R: Uso de DOM permite hacerlo, (no comas ansias)
5. que tal con el uso de los navegadores actuales como el Chrome, Mozilla, Rekong, Opera,etc.
6. R: no tiene problemas de compatibilidad con las nuevas generaciones de browsers.
7. ¿Como se simplifica el mantenimiento de los sitios web???
8. R: Te permite concentrarte en aspectos de estabilidad para tus documentos.
Esta es la razón de X
Por eso estipo de escritura es extensible, tu creas lo que necesitas. Pero
1. ¿Cómo sabe el navegador que <toc> es equivalente a una combinación de tabla, enlace y tipo de letra.?
2. R: Para esto se usa la hoja de estilos.
3. ¿Se pueden commparar diferentes precios?
4. R: Uso de DOM permite hacerlo, (no comas ansias)
5. que tal con el uso de los navegadores actuales como el Chrome, Mozilla, Rekong, Opera,etc.
6. R: no tiene problemas de compatibilidad con las nuevas generaciones de browsers.
7. ¿Como se simplifica el mantenimiento de los sitios web???
8. R: Te permite concentrarte en aspectos de estabilidad para tus documentos.
Esta es la razón de X
Por eso estipo de escritura es extensible, tu creas lo que necesitas. Pero
1. ¿Cómo sabe el navegador que <toc> es equivalente a una combinación de tabla, enlace y tipo de letra.?
2. R: Para esto se usa la hoja de estilos.
3. ¿Se pueden commparar diferentes precios?
4. R: Uso de DOM permite hacerlo, (no comas ansias)
5. que tal con el uso de los navegadores actuales como el Chrome, Mozilla, Rekong, Opera,etc.
6. R: no tiene problemas de compatibilidad con las nuevas generaciones de browsers.
7. ¿Como se simplifica el mantenimiento de los sitios web???
8. R: Te permite concentrarte en aspectos de estabilidad para tus documentos.
Esta es la razón de X
Por eso estipo de escritura es extensible, tu creas lo que necesitas. Pero
1. ¿Cómo sabe el navegador que <toc> es equivalente a una combinación de tabla, enlace y tipo de letra.?
2. R: Para esto se usa la hoja de estilos.
3. ¿Se pueden commparar diferentes precios?
4. R: Uso de DOM permite hacerlo, (no comas ansias)
5. que tal con el uso de los navegadores actuales como el Chrome, Mozilla, Rekong, Opera,etc.
6. R: no tiene problemas de compatibilidad con las nuevas generaciones de browsers.
7. ¿Como se simplifica el mantenimiento de los sitios web???
8. R: Te permite concentrarte en aspectos de estabilidad para tus documentos.
Más estricto??Siiiiiii
1. XML no está pensado para publicar páginas web. !!!!!!
2. XML está pensado más en aspecto de publicación de documentos técnicos, libros,etc.
Más estricto??Siiiiiii
1. XML no está pensado para publicar páginas web. !!!!!!
2. XML está pensado más en aspecto de publicación de documentos técnicos, libros,etc.
Considera la siguiente estructura: INTERNAL MEMO
From: John Doe To: Jack Smith
Regarding: XML at WhizBang
Have you heard of this new technology, XML? It looks promising. It is similar to HTML but it is extensible. All the big names (Microsoft, IBM, Oracle) are backing it.
We could use XML to simplify our e-commerce and launch new services. It is also useful for the Web site: You complained it was a lot of work; apparently, XML can simplify the maintenance.
Check this Web site <http://www.w3.org/XML> for more information. Also visit Que
(<http://www.mcp.com>). It has just released "XML by Example"with lots of useful information and some great examples. I have already ordered two copies!
John
8
of
que partes se identifican
• Título
• Encabezado indicando el tema y quien va dirigido
• El cuerpo del texto el cual tiene elementos como
◦ tres párrafos
◦ Referencias a enlaces ◦ firma
Esto lopodemos descomponer a cualquier nivel que se desee, mientras más pequeño sea la descomposición menos información sobre l estructura del documento se incorpora.
En XML usaremos una forma diferente de de registrar la estructura del documento.
que partes se identifican
• Título
• Encabezado indicando el tema y quien va dirigido
• El cuerpo del texto el cual tiene elementos como
◦ tres párrafos
◦ Referencias a enlaces ◦ firma
Esto lopodemos descomponer a cualquier nivel que se desee, mientras más pequeño sea la descomposición menos información sobre l estructura del documento se incorpora.
En XML usaremos una forma diferente de de registrar la estructura del documento.
que partes se identifican
• Título
• Encabezado indicando el tema y quien va dirigido • El cuerpo del texto el cual tiene elementos como
◦ tres párrafos
◦ Referencias a enlaces ◦ firma
Esto lopodemos descomponer a cualquier nivel que se desee, mientras más pequeño sea la descomposición menos información sobre l estructura del documento se incorpora.
En XML usaremos una forma diferente de de registrar la estructura del documento.
que partes se identifican
• Título
• Encabezado indicando el tema y quien va dirigido • El cuerpo del texto el cual tiene elementos como
◦ tres párrafos
◦ Referencias a enlaces ◦ firma
Esto lopodemos descomponer a cualquier nivel que se desee, mientras más pequeño sea la descomposición menos información sobre l estructura del documento se incorpora.
En XML usaremos una forma diferente de de registrar la estructura del documento.
que partes se identifican
• Título
• Encabezado indicando el tema y quien va dirigido • El cuerpo del texto el cual tiene elementos como
◦ tres párrafos
◦ Referencias a enlaces
◦ firma
Esto lopodemos descomponer a cualquier nivel que se desee, mientras más pequeño sea la descomposición menos información sobre l estructura del documento se incorpora.
En XML usaremos una forma diferente de de registrar la estructura del documento.
que partes se identifican
• Título
• Encabezado indicando el tema y quien va dirigido • El cuerpo del texto el cual tiene elementos como
◦ tres párrafos
◦ Referencias a enlaces ◦ firma
Esto lopodemos descomponer a cualquier nivel que se desee, mientras más pequeño sea la descomposición menos información sobre l estructura del documento se incorpora.
En XML usaremos una forma diferente de de registrar la estructura del documento.
que partes se identifican
• Título
• Encabezado indicando el tema y quien va dirigido • El cuerpo del texto el cual tiene elementos como
◦ tres párrafos
◦ Referencias a enlaces ◦ firma
Esto lopodemos descomponer a cualquier nivel que se desee, mientras más pequeño sea la descomposición menos información sobre l estructura del documento se incorpora.
En XML usaremos una forma diferente de de registrar la estructura del documento.
que partes se identifican
• Título
• Encabezado indicando el tema y quien va dirigido • El cuerpo del texto el cual tiene elementos como
◦ tres párrafos
◦ Referencias a enlaces ◦ firma
Esto lopodemos descomponer a cualquier nivel que se desee, mientras más pequeño sea la descomposición menos información sobre l estructura del documento se incorpora.
En XML usaremos una forma diferente de de registrar la estructura del documento.
<? xml v e r s i o n=" 1 . 0 " ?>
<!DOCTYPE memo SYSTEM "memo . d t d "> <memo> <h e a d e r> <f r o m>John Doe</ f r o m> <t o>J a c k S m it h</ t o> < s u b j e c t>XML a t WhizBang</ s u b j e c t> </ h e a d e r> <body> <p a r a>
Have you h e a r d o f t h i s new t e c h n o l o g y , XML? I t l o o k s p r o m i s i n g . I t i s s i m i l a r t o HTML b u t i t i s e x t e n s i b l e . A l l t h e b i g names ( M i c r o s o f t , IBM , O r a c l e ) a r e b a c k i n g i t . </ p a r a>
<p a r a>
We c o u l d u s e XML t o s i m p l i f y o u r e−commerce and l a u n c h new s e r v i c e s . I t i s a l s o u s e f u l f o r t h e web s i t e : you
c o m p l a i n e d i t was a l o t o f work , a p p a r e n t l y XML c a n s i m p l i f y t h e m a i n t e n a n c e . </ p a r a> <p a r a> Check t h i s web s i t e < u r l> h t t p : //www . w3 . o r g /XML</ u r l> f o r more i n f o r m a t i o n . A l s o v i s i t Que 9 of 47
(< u r l> h t t p : //www . mcp . com</ u r l> ) . They h a v e j u s t r e l e a s e d "XML␣ by ␣ Example " w i t h l o t s o f u s e f u l i n f o r m a t i o n and some g r e a t e x a m p l e s . I h a v e a l r e a d y o r d e r e d two c o p i e s ! </ p a r a> < s i g n a t u r e>John</ s i g n a t u r e> </ body> </memo> 9 of 47
Estructura de un documento XML
Listas de productos en una base de datos relacional
Identificador nombre Precio
p1 Editor XML $499.00
p2 Editor de DTD $199.00 p3 Libro de XML $19.99 p4 entrenamiento de XML $999.99
<? xml v e r s i o n=" 1 . 0 " ?> <p r o d u c t s> <p r o d u c t i d=" p1 "> <name>XML E d i t o r</name> < p r i c e>4 9 9 . 0 0</ p r i c e> </ p r o d u c t> <p r o d u c t i d=" p2 "> <name>DTD E d i t o r</name> < p r i c e>1 9 9 . 0 0</ p r i c e> </ p r o d u c t> <p r o d u c t i d=" p3 "> <name>XML Book</name> < p r i c e>1 9 . 9 9</ p r i c e> </ p r o d u c t> <p r o d u c t i d=" p4 "> <name>XML T r a i n i n g</name> < p r i c e>6 9 9 . 0 0</ p r i c e> </ p r o d u c t> </ p r o d u c t s> 12 of 47
En este contexto XML es utilizado para intercambiar datos del web.
ESCRITURA
Nombres válidos Inválidos <copyright-information> <123> <base64> <64> <décompte.client> <Juan&pedro> <firstname> <firsty name>
Reecomendaciones
• XML es sensitivo al caso, se adopta la convención de que los elementos de XML sea escritos en minúsculas.
• Se recomienda separar los nombres con guión.
• La primera letra de cada palabra debe ser mayúscula y evita uso de caracter de separación CasaCuna
Atributos
Es posible añadir información adicional a los elementos en forma de atributos, los cuales tiene un nombre y valor.
<tel preferred=true>513-555-8889</tel> Y rechazar este:
<tel preferred=true>513-555-8889</tel>
Se insiste en el uso de las marcas o comillas simples o dobles. Para XML estos dos elementos son idénticos
<email href="mailto:[email protected]/>
<email href="mailto:[email protected]»</email>
Aca los elementos no tiene contexto y se denotan como elementos vacios.
Anidación de elementos
Consideremos el caso de un directorio telefónico como el que se muestra:
Un elemento dentro de otro se denomina hijo por que está dentro de su padre
<name>
<? xml v e r s i o n=" 1 . 0 " ?> <!−− l o o s e l y i n s p i r e d by v C a r d 3 . 0 −−> <a d d r e s s −book> <e n t r y> <name>John Doe</name> <a d d r e s s> < s t r e e t>34 F o u n t a i n S q u a r e P l a z a</ s t r e e t> < r e g i o n>OH</ r e g i o n> <p o s t a l −c o d e>45202</ p o s t a l −c o d e> < l o c a l i t y> C i n c i n n a t i</ l o c a l i t y> <c o u n t r y>US</ c o u n t r y> </ a d d r e s s> < t e l p r e f e r r e d=" t r u e ">513−555−8889</ t e l> < t e l>513−555−7098</ t e l> <e m a i l h r e f=" m a i l t o : j d o e @ e m a i l a h o l i c . com " /> </ e n t r y> <e n t r y>
<name><fname>J a c k</ fname><lname>S m i th</ lname></name> < t e l>513−555−3465</ t e l> <e m a i l h r e f=" m a i l t o : j s m i t h @ e m a i l a h o l i c . com " /> </ e n t r y> </ a d d r e s s −book> 16 of 47
La raiz (root). Una y solo una cuál es???????
<?xml v e r s i o n ="1.0"? > −−−> Yo s o y l a d e c l a r a c i ó n <a d d r e s s −book>−−−> yo s o y l a r a í z <e n t r y > <name>John Doe</name> <e m a i l h r e f =" m a i l t o : j d o e @ e m a i l a h o l i c . com"/> </ e n t r y > <e n t r y > <name>J a c k S m i t h </name> <e m a i l h r e f =" m a i l t o : j s m i t h @ e m a i l a h o l i c . com"/> </ e n t r y > </ a d d r e s s −book><?xml version="1.0.encoding=ÏSO-8859-1¿>
Este un código recomendado por que tenemos caráctertes en latín.
Entidades. Complejas!!
XML permite organizar los documentos físicos en entidades, y deben ser declaradas en el DTD (Document Type Definition).
Si asumimos que tenemos definida una entidad denominada Estados e cual puede tener el valor "Puebla.o "Pue"las siguientes dos líneas son
equivalentes:
<estados>&Pue;</estados> <estados>Puebla</estados>
Atributos Especiales
xml:space Para aplicaciones que deseen desechar espacios duplicados. si se desean preservar entonces se debe especificar mediante preserve y lo realiza en todos los niveles empezando en el padre y siguiendo hasta sus hijos. si se pone en modo por defecto (default la aplicación utiliza el espacio predefinido.
xml:lang Esta opción pemrite definir el lenguaje en el que se escribirá el documento:
• Español <p xml:lang=.es» </p> • Inglés americano:
<p xml:lang= .en-US»What color is it?</p>
Instrucciones de procesamiento (PI)
Mecanismo que permite insertar expresiones que no están en XML, tales como scripts.
Un ejemplo de instrucción de procesamiento el elemento que indica que sigue XML:<?xml version="1.0¿>
Caracteres de escape
< El agrupador menor < debe ser escapado con <
& El ampersand debe ser escapado con &
> El agrupador mayor > debe ser escapado con >
&apos La comilla simple ’ se escapa con &apos
" La comilla doble "se escapa con "
<company>FeCal & Chapo</company> debe ser escrita como
<company>FeCal & Chapo</company>
Character Data: CDATA
Las secciones CDATA proporcionan una forma de informar al analizador de que no hay marcado en los caracteres que contiene la sección CDATA. Esto facilita la creación de documentos que contienen secciones donde los caracteres de marcado podrían
aparecer, pero donde no hay ningún marcado diseñado. Las secciones CDATA se utilizan comúnmente para contenido de lenguaje de secuencia y contenido de muestra de XML y HTML. Se utilizan
XML dentro de XML con CDATA
<? xml v e r s i o n=" 1 . 0 " ?> <e x a m p l e> < [CDATA[ <?xml v e r s i o n ="1.0"? > <e n t r y > <name>John Doe</name> <e m a i l h r e f =" m a i l t o : j d o e @ e m a i l a h o l i c . com"/> </ e n t r y > ] ] > </ e x a m p l e> 24 of 47DTD: Document Type Definition
La DTD es una definición, en un documento SGML o XML, que especifica restricciones en la estructura y sintaxis del mismo. La DTD se puede incluir dentro del archivo del documento, pero normalmente se almacena en un fichero ASCII de texto separado. La sintaxis de las DTD para SGML y XML es similar pero no idéntica.
La definición de una DTD especifica la sintaxis de una aplicación de SGML o XML, que puede ser un estándar ampliamente utilizado como XHTML o una aplicación local.
Que describe una DTD
• Elementos: indican qué etiquetas son permitidas y el contenido de dichas etiquetas.
• Estructura: indica el orden en que van las etiquetas en el documento.
• Anidamiento: indica qué etiquetas van dentro de otras.
Ejemplo
Un ejemplo de una DTD XML muy simple, para describir una lista de personas:
<!ELEMENT l i s t a _ d e _ p e r s o n a s ( p e r s o n a ∗ )>
<!ELEMENT p e r s o n a ( nombre , f e c h a n a c i m i e n t o ? , s e x o ? , n u m e r o s e g u r i d a d s o c i a l ? )>
<!ELEMENT nombre (#PCDATA) >
<!ELEMENT f e c h a n a c i m i e n t o (#PCDATA) > <!ELEMENT s e x o (#PCDATA) >
Leyendo el ejemplo
1. < lista_de_personas > es un nombre de elemento válido. El *
indica que puede haber 0 o más elementos de persona.
2. < persona > es un nombre de elemento válido. Éste contiene
obligatoriamente el elemento nombre mientras que el resto son opcionales. Y lo son porque nos lo indica el símbolo ¿".
3. < nombre > es un nombre de elemento válido. Contiene caracteres. 4. < sexo > es un nombre de elemento válido. Contiene caracteres. 5. < fechanacimiento > es un nombre de elemento válido.
6. < numeroseguridadsocial > es un nombre de elemento válido.
Leyendo el ejemplo
1. < lista_de_personas > es un nombre de elemento válido. El *
indica que puede haber 0 o más elementos de persona.
2. < persona > es un nombre de elemento válido. Éste contiene
obligatoriamente el elemento nombre mientras que el resto son opcionales. Y lo son porque nos lo indica el símbolo ¿".
3. < nombre > es un nombre de elemento válido. Contiene caracteres. 4. < sexo > es un nombre de elemento válido. Contiene caracteres. 5. < fechanacimiento > es un nombre de elemento válido.
Leyendo el ejemplo
1. < lista_de_personas > es un nombre de elemento válido. El *
indica que puede haber 0 o más elementos de persona.
2. < persona > es un nombre de elemento válido. Éste contiene
obligatoriamente el elemento nombre mientras que el resto son opcionales. Y lo son porque nos lo indica el símbolo ¿".
3. < nombre > es un nombre de elemento válido. Contiene caracteres.
4. < sexo > es un nombre de elemento válido. Contiene caracteres. 5. < fechanacimiento > es un nombre de elemento válido.
6. < numeroseguridadsocial > es un nombre de elemento válido.
Leyendo el ejemplo
1. < lista_de_personas > es un nombre de elemento válido. El *
indica que puede haber 0 o más elementos de persona.
2. < persona > es un nombre de elemento válido. Éste contiene
obligatoriamente el elemento nombre mientras que el resto son opcionales. Y lo son porque nos lo indica el símbolo ¿".
3. < nombre > es un nombre de elemento válido. Contiene caracteres. 4. < sexo > es un nombre de elemento válido. Contiene caracteres.
5. < fechanacimiento > es un nombre de elemento válido. 6. < numeroseguridadsocial > es un nombre de elemento válido.
Leyendo el ejemplo
1. < lista_de_personas > es un nombre de elemento válido. El *
indica que puede haber 0 o más elementos de persona.
2. < persona > es un nombre de elemento válido. Éste contiene
obligatoriamente el elemento nombre mientras que el resto son opcionales. Y lo son porque nos lo indica el símbolo ¿".
3. < nombre > es un nombre de elemento válido. Contiene caracteres. 4. < sexo > es un nombre de elemento válido. Contiene caracteres. 5. < fechanacimiento > es un nombre de elemento válido.
6. < numeroseguridadsocial > es un nombre de elemento válido.
Leyendo el ejemplo
1. < lista_de_personas > es un nombre de elemento válido. El *
indica que puede haber 0 o más elementos de persona.
2. < persona > es un nombre de elemento válido. Éste contiene
obligatoriamente el elemento nombre mientras que el resto son opcionales. Y lo son porque nos lo indica el símbolo ¿".
3. < nombre > es un nombre de elemento válido. Contiene caracteres. 4. < sexo > es un nombre de elemento válido. Contiene caracteres. 5. < fechanacimiento > es un nombre de elemento válido.
Un XML que hace uso de la DTD definida
<? xml v e r s i o n=" 1 . 0 " e n c o d i n g=" ISO −8859−1 " ?>
<!DOCTYPE l i s t a _ d e _ p e r s o n a s SYSTEM " e j e m p l o . d t d "> <l i s t a _ d e _ p e r s o n a s>
<p e r s o n a>
<nombre>J o s é G a r c í a</ nombre>
<f e c h a n a c i m i e n t o>2 5 / 0 4 / 1 9 8 4</ f e c h a n a c i m i e n t o> <s e x o>Varón</ s e x o>
</ p e r s o n a>
</ l i s t a _ d e _ p e r s o n a s>
DTD
Declaración de Elementos y palabras especiales
<!ELEMENT address-book (entry+)>
Los paréntesis se usan para agrupar elementos en el contenido del modelo:
<!ELEMENT name (lname, (fname | title))>
Palabras especiales o keywords
• #PCDATA significa parsed character datae implica que el elemento puede contener texto. #PCDATA es comúnmente utilizada para denotar elementos hijos u hojas (la hoja no tiene hijos)
• EMPTY denota el elemento vacio.
• ANY significa que los elementos pueden contener cualquier otro elemento declarado en el DTD. ANY es utilizado a veces durante el desarrollo de un DTD. Note que los elementos deben ser declarados en el DTD.
El uso de +, ∗, ?
Indicadores de ocurrencia
• Un elemento sin indicador de ocurrrencia solo debe aprecer una vez y solamente en el elemento definido.
• Un elemento seguido de -" debe una o más veces en el elemento que está siendo definido. Los elelementos se pueden repetir.
• Un elemento seguido por "*" puede aparecer nunca o más veces en el elemento que esta siendo definido. el elemento es opcional pero si se incluye puede repetirse indefinidamente.
• Un elemento seguido por ¿" puede aparecer una vez y no en todos los elementos que están siendo definidos. Esto indica que el
Por ejemplo la entrada name
Uso de los indicadores de ocurrencia
• <!ELEMENTentry (name, address∗, tel ∗, fax ∗, email ∗) >
• Indica que son hijos aceptables para la entrada name: address, tel, fax y email. Estos hijos son opcionales y se pueden repetir.
• <!ELEMENTaddress(street, region?, postal − code, locality , country ) >
• Indica que hijos aceptables para address son region, postal-code,
locality y country. ninguno de los hijos puede repetirse pero region es opcional.
Secreto del uso de la coma y |
1. El caracter "," significa que ambos elementos que se encuentran a la izquierda y derecha de la coma deben aparecer en el mismo orden en el documento.
2. El caracter "|" significa que solamente uno de los elementos ya sea a la izquierda o derecha de la barra debe aparecer en el documento.
elementos address y name
Aca indica que name puede tener fname o lname
<!ELEMENTname <!ELEMENTaddress(#PCDATA|fname|lname)∗ >
Acá se indica que para street debe tener en ese orden los otros campos
Atributos, declarados en el DTD
Los elementos pueden tener atributos, que son una manera de incorporar características o propiedades a los elementos de un documento. Deben ir entre comillas.
Un elemento estudiante puede tener un atributo Mario y un atributo tipo , con valores comecroquetas y
taleno respectivamente.
<Estudiante Mario=çome croquetas"tipo="taleno» Esto es un día que Mario va paseando...<Estudiante>
Atributos, declarados en el DTD.cont
En el DTD disponemos de un mecanismo para indicar qué atributos puede tener un ELEMENT, de qué tipo, si son o no obligatorios. Para ello hacemos uso del elemento ATTLIST:
Sintáxis
<!ATTLISTelementoatributotipo − atributovalor − defecto >
Su uso sería
<!ATTLISTpagometodoCDATA”contra − reembolso” >
Y en XML
Categorias de atributos
1. Tipo cadenas: <!ATTLISTemailhrefCDATA#REQUIRED >
2. Atributos token con restricciones en el contenido del atributo
<!ATTLISTentryidID#IMPLIED >
3. Atributos enumerados que aceptan un valor en al lista de atributos
<!ATTLISTentrypreferred (true|false)”false” >
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
NMTOKENS es una lista de NMTOKEN separada por espacios.
Enumerated-type Lista de nmtokens separados por |, el valor tiene que ser uno de los nmtokens.
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
NMTOKENS es una lista de NMTOKEN separada por espacios.
Enumerated-type Lista de nmtokens separados por |, el valor tiene que ser uno de los nmtokens.
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
NMTOKENS es una lista de NMTOKEN separada por espacios.
Enumerated-type Lista de nmtokens separados por |, el valor tiene que ser uno de los nmtokens.
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
NMTOKENS es una lista de NMTOKEN separada por espacios.
Enumerated-type Lista de nmtokens separados por |, el valor tiene que ser uno de los nmtokens.
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
NMTOKENS es una lista de NMTOKEN separada por espacios.
Enumerated-type Lista de nmtokens separados por |, el valor tiene que ser uno de los nmtokens.
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
NMTOKENS es una lista de NMTOKEN separada por espacios.
Enumerated-type Lista de nmtokens separados por |, el valor tiene que ser uno de los nmtokens.
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
NMTOKENS es una lista de NMTOKEN separada por espacios.
Enumerated-type Lista de nmtokens separados por |, el valor tiene que ser uno de los nmtokens.
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
NMTOKENS es una lista de NMTOKEN separada por espacios.
Enumerated-type Lista de nmtokens separados por |, el valor tiene que ser uno de los nmtokens.
Los tipos de atributos pueden tomar cualquiera de los
siguientes valores
CDATA Para tributos tipo cadena.
ID Un identificador es el nombre único en el documento.
IDREF Debe ser el valor del ID en cualquier parte del documento, se usa para crear enlaces dentro del documento.
IDREFS Es la lista de IDREF separados por espacios.
ENTITY Debe ser el nombre de una entidad externa, sirve para asignarle a esa entidad un atributo.
ENTITIES Es la listya de ENTITY separada por espacios.
NMTOKEN Es una palabra sin espacios.
Opcionalmente:DTD especifica los valores x defecto
#REQUIRED Se debe indicar en el documento.
#IMPLIED si no se espcifica toma el valor por defecto.
#FIXED Seguido de un valor indica que el atributo debe tener valor en el documento de acuerdo a lo definido en el DTD
literal toma el valor tal cual se indica si se omitió asignarle valor.
Opcionalmente:DTD especifica los valores x defecto
#REQUIRED Se debe indicar en el documento.
#IMPLIED si no se espcifica toma el valor por defecto.
#FIXED Seguido de un valor indica que el atributo debe tener valor en el documento de acuerdo a lo definido en el DTD
literal toma el valor tal cual se indica si se omitió asignarle valor.
Opcionalmente:DTD especifica los valores x defecto
#REQUIRED Se debe indicar en el documento.
#IMPLIED si no se espcifica toma el valor por defecto.
#FIXED Seguido de un valor indica que el atributo debe tener valor en el documento de acuerdo a lo definido en el DTD
literal toma el valor tal cual se indica si se omitió asignarle valor.
Opcionalmente:DTD especifica los valores x defecto
#REQUIRED Se debe indicar en el documento.
#IMPLIED si no se espcifica toma el valor por defecto.
#FIXED Seguido de un valor indica que el atributo debe tener valor en el documento de acuerdo a lo definido en el DTD
literal toma el valor tal cual se indica si se omitió asignarle valor.
Declaración, pero no de amor
La declaración de un documento tipo es para asignar DTD a un documento.
DTD es definición, mientras que la declaración es:
<!DOCTYPE address − book SYSTEM ”address − book.dtd ” > Por ejemplo
<?xml v e r s i o n ="1.0"? >
<!DOCTYPE e n t r y SYSTEM " a d d r e s s −book . d t d "> <e n t r y >
DTD: externo a tu XML o interno a él
Interno <!DOCTYPE a d d r e s s [ <!ELEMENT a d d r e s s ( s t r e e t , r e g i o n ? , p o s t a l −code , l o c a l i t y , c o u n t r y )> <!ATTLIST a d d r e s s p r e f e r r e d ( t r u e | f a l s e ) " f a l s e "> <!ELEMENT s t r e e t (\#PCDATA)> <!ELEMENT r e g i o n (\#PCDATA)> <!ELEMENT p o s t a l −c o d e (\#PCDATA)> <!ELEMENT l o c a l i t y (\#PCDATA)> <!ELEMENT c o u n t r y (\#PCDATA)> ]>Externo
Puede ser
• <!DOCTYPE address − book SYSTEM ”http : www .xmli .comdtd address − book.dtd ” > • <!DOCTYPE address − book PUBLIC ” −
//Pineapplesoft//AddressBook//EN” ”http :
//catwoman.pineapplesoft.com/dtd /address − book.dtd ” > • <!DOCTYPE address − book SYSTEM ”../dtds/address −
book.dtd ” >
Universal=URL o Público=copias locales
Tipos de documentos
Bien Formados sigue la sintáxis de XML
Validos Documentos más estrictos, siguen las reglas de sintáxis y cumplen con una estructura específica.
x
x