Impresiones web superior

Mostrando entradas con la etiqueta XML. Mostrar todas las entradas
Mostrando entradas con la etiqueta XML. Mostrar todas las entradas

sábado, 26 de mayo de 2018

DTD (DOCUMENT TYPE DEFINITIONS) VI

 
DECLARACIONES DE LISTA DE ATRIBUTOS
Los atributos permiten añadir información adicional a los elementos de un documento. La principal diferencia entre los elementos y los atributos, es que los atributos no pueden contener sub-atributos. Se usan para añadir información corta, sencilla y desestructurada.
<mensaje prioridad="urgente">
<de>Alfredo Reino</de>
<a>Hans van Parijs</a>
<texto idioma="holandés">
Hallo Hans, hoe gaat het?
...
</texto>
</mensaje>






Otra diferencia entre los atributos y los elementos, es que cada uno de los atributos sólo se puede especificar una vez, y en cualquier orden.
En el ejemplo anterior, para declarar la lista de atributos de los elementos <mensaje> y <texto> haríamos lo siguiente:
<!ELEMENT mensaje (de, a, texto)>
<!ATTLIST mensaje prioridad (normal | urgente) normal>
<!ELEMENT texto(#PCDATA)>
<!ATTLIST texto idioma CDATA #REQUIRED>


Las declaraciones de los atributos empiezan con "<!ATTLIST", y a continuación del espacio en blanco viene el identificador del elemento al que se aplica el atributo. Despues viene el nombre del atributo, su tipo y su valor por defecto. En el ejemplo anterior, el atributo "prioridad" puede estar en el elemento <mensaje> y puede tener el valor "normal" o "urgente", siendo "normal" el valor por defecto si no especificamos el atributo.
El atributo "idioma", pertenece al elemento texto, y puede contener datos de carácter (CDATA). Es más, la palabra #REQUIRED significa que no tiene valor por defecto, ya que es obligatorio especificar este atributo.
A menudo interesa que se pueda omitir un atributo, sin que se adopte automáticamente un valor por defecto. Para esto se usa la condición "#IMPLIED". Por ejemplo, en una supuesta DTD que defina la etiqueta <IMG> de HTML:
<!ATTLIST IMG URL CDATA #REQUIRED ALT CDATE #IMPLIED>
Es decir, el atributo "URL" es obligatorio, mientras que el "ALT" es opcional (y si se omite, no toma ningún valor por defecto).
nos vemos en la parte 7









DTD (DOCUMENT TYPE DEFINITIONS) VII


TIPOS DE ATRIBUTOS
Atributos CDATA y NMTOKEN
Los atributos CDATA (character data) son los más sencillos, y pueden contener casi cualquier cosa. Los atributos NMTOKEN (name token) son parecidos, pero sólo aceptan los caracteres válidos para nombrar cosas (letras, números, puntos, guiones, subrayados y los dos puntos).
<!ATTLIST mensaje fecha CDATA #REQUIRED>
<mensaje fecha="15 de Julio de 1999">
<!ATTLIST mensaje fecha NMTOKEN #REQUIRED>
<mensaje fecha="15-7-1999">


Atributos enumerados y notaciones
Los atributos enumerados son aquellos que sólo pueden contener un valor de entre un número reducido de opciones.
<!ATTLIST mensaje prioridad (normal | urgente) normal>
Existe otro tipo de atributo parecido, llamado de notación (NOTATION). Este tipo de atributo permite al autor declarar que su valor se ajusta a una notación declarada.
<!ATTLIST mensaje fecha NOTATION (ISO-DATE | EUROPEAN-DATE) #REQUIRED>
Para declarar las notaciones, se utiliza "<!NOTATION", con una definición externa de la notación. La definición externa puede ser pública o un identificador del sistema para la documentación de la notación, una especificación formal o un asistente de la aplicación que contenga objetos representados en la notación.
<!NOTATION HTML SYSTEM "http://www.w3.org/Markup">
<!NOTATION HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Atributos ID e IDREF
El tipo ID permite que un atributo determinado tenga un nombre único que podrá ser referenciado por un atributo de otro elemento que sea de tipo IDREF. Por ejemplo, para implementar un sencillo sistema de hipervínculos en un documento:
<!ELEMENT enlace EMPTY>
<!ATTLIST enlace destino IDREF #REQUIRED>
<!ELEMENT capitulo (parrafo)*>
<!ATTLIST capitulo referencia ID #IMPLIED>


En este caso, una etiqueta <enlace destino="seccion-3"> haría referencia a un <capitulo referencia="seccion-3">, de forma que el procesador XML lo podría convertir en un hipervínculo, u otra cosa.
nos vemos en la parte 8









DTD (DOCUMENT TYPE DEFINITIONS) VIII


DECLARACIÓN DE ENTIDADES
XML hace referencia a objetos (ficheros, páginas web, imágenes, cualquier cosa) que no deben ser analizados sintácticamente según las reglas de XML, mediante el uso de entidades. Se declaran en la DTD mediante el uso de "<!ENTITY"
Una entidad puede no ser más que una abreviatura que se utiliza como una forma corta de algunos textos. Al usar una referencia a esta entidad, el analizador sintáctico reemplaza la referencia con su contenido. En otras ocasiones es una referencia a un objeto externo o local.
Las entidades pueden ser:
  • Internas o Externas
  • Analizadas o No analizadas
  • Generales o Parámetro
Entidades generales internas
Son las más sencillas. Son básicamente abreviaturas definidas en la sección de la DTD del documento XML. Son siempre entidades analizadas, es decir, una vez reemplazada la referencia a la entidad por su contenido, pasa a ser parte del documento XML y como tal, es analizada por el procesador XML.
<!DOCTYPE texto[
<!ENTITY alf "Alien Life Form">
]>
<texto><titulo>Un día en la vida de un &alf;</titulo></texto>


Entidades generales externas analizadas
Las entidades externas obtienen su contenido en cualquier otro sitio del sistema, ya sea otro archivo del disco duro, una página web o un objeto de una base de datos. Se hace referencia al contenido de una entidad así mediante la palabra SYSTEM seguida de un URI (Universal Resource Identifier)
<!ENTITY intro SYSTEM "http://www.miservidor.com/intro.xml">
Entidades no analizadas
Evidentemente, si el contenido de la entidad es un archivo MPG o una imagen GIF o un fichero ejecutable EXE, el procesador XML no debería intentar interpretarlo como si fuera texto XML. Este tipo de entidades siempre son generales y externas.
<!ENTITY logo SYSTEM "http://www.miservidor.com/logo.gif">
Entidades parámetro internas y externas
Se denominan entidades parámetro a aquellas que sólo pueden usarse en la DTD, y no en el documento XML. Se pueden utilizar para agrupar ciertos elementos del DTD que se repitan mucho. Se diferencian las entidades parámetro de las generales, en que para hacer referencia a ellas, se usa el símbolo "%" en lugar de "&" tanto como para declararlas como para usarlas.
<!DOCTYPE texto[
<!ENTITY % elemento-alf "<!ELEMENT ALF (#PCDATA)>">
...
%elemento-alf;
]>



Tambien puede ser externa:
<!DOCTYPE texto[
<!ENTITY % elemento-alf SYSTEM "alf.ent">
...
%elemento-alf;
]>



nos vemos en la parte 9












DTD (DOCUMENT TYPE DEFINITIONS) IX


EJEMPLO DE DTD
Un DTD que puede servir como ejemplo podría ser uno que nos defina un lenguaje de marcado para una base de datos de personas.
En el ejemplo vamos a examinar cómo hacer una agenda que guardará el nombre y teléfono de cada persona. Además, cada persona tendrá un identificador (obligatoriamente) como atributo.
El fichero ejemplo-agenda.dtd podría ser algo así:
<?xml encoding="UTF-8"?>
<!ELEMENT agenda (persona)+>
<!ELEMENT persona (nombre, tlf)>
<!ATTLIST persona id ID #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT tlf (#PCDATA)>




Basándonos en este DTD, podríamos escribir nuestra primera agenda en XML (ejemplo-agenda.xml) de la siguiente manera:
<?xml version="1.0"?>
<!DOCTYPE agenda SYSTEM "ejemplo-agenda.dtd">
<agenda>
<persona id="ricardo">
<nombre>Ricardo Borriquero</nombre>
<tlf>951345678</tlf>
</persona>
<persona id="eva">
<nombre>Eva Risto</nombre>
<tlf>955837659</tlf>
</persona>
</agenda>













martes, 14 de agosto de 2012

DTD (DOCUMENT TYPE DEFINITIONS) V

 

MODELOS DE CONTENIDO

Un modelo de contenido es un patrón que establece los sub-elementos aceptados, y el orden en que se acepta.

Un modelo sencillo puede tener un solo tipo de sub-elemento:

<!ELEMENT aviso (parrafo)>

Esto indica que sólo puede contener un solo <parrafo>.

<!ELEMENT aviso (titulo, parrafo)>

La coma, en este caso, denota una secuencia. Es decir, el elemento <aviso> debe contener un <titulo> seguido de un <parrafo>.

<!ELEMENT aviso (parrafo | grafico)>

La barra vertical "|" indica una opción. Es decir, <aviso> puede contener o bien un <parrafo> o bien un <grafico>. El número de opciones no está limitado a dos, y se pueden agrupar usando paréntesis.

<!ELEMENT aviso (titulo, (parrafo | grafico))>

En este último caso, el <aviso> debe contener un <titulo> seguido de un <parrafo> o de un <grafico>.

Además, cada partícula de contenido puede llevar un indicador de frecuencia, que siguen directamente a un identificador general, una secuencia o una opción, y no pueden ir precedidos por espacios en blanco.

Indicadores de frecuencia

?

Opcional (0 o 1 vez)

*

Opcional y repetible (0 o más veces)

+

Necesario y repetible (1 o más veces)

Para entender esto, vamos a ver un ejemplo.

<!ELEMENT aviso (titulo?, (parrafo+, grafico)*)>

En este caso, <aviso> puede tener <titulo>, o no (pero sólo uno), y puede tener cero o más conjuntos <parrafo><grafico>, <parrafo><parrafo><grafico>, etc.

nos vemos en la parte 6

lunes, 13 de agosto de 2012

DTD (DOCUMENT TYPE DEFINITIONS) IV

 

DECLARACIONES TIPO ELEMENTO

Los elementos son la base de las marcas XML, y deben ajustarse a un tipo de documento declarado en una DTD para que el documento XML sea considerado válido.

Las declaraciones de tipo de elemento deben empezar con "<!ELEMENT" seguidas por el identificador genérico del elemento que se declara. A continuación tienen una especificación de contenido.

Por ejemplo:

<!ELEMENT receta (titulo, ingredientes, procedimiento)>

En este ejemplo, el elemento <receta> puede contener dentro elementos <titulo>, <ingredientes> y <procedimiento>, que, a su vez, estarán definidos también en la DTD y podrán contener más elementos.

Siguiendo la definición de elemento anterior, este ejemplo de documento XML sería válido:

<receta>

<titulo>...</titulo>

<ingredientes>...</ingredientes>

<procedimiento>...</procedimiento>

</receta>

Pero no este:

<receta>

<parrafo>Esto es un párrafo</parrafo>

<titulo>...</titulo>

<ingredientes>...</ingredientes>

<procedimiento>...</procedimiento>

</receta>

La especificación de contenido puede ser de cuatro tipos:

EMPTY

Puede no tener contenido. Suele usarse para los atributos.

<!ELEMENT salto-de-pagina EMPTY>

ANY

Puede tener cualquier contenido. No se suele utilizar, ya que es conveniente estructurar adecuadamente nuestros documentos XML.

<!ELEMENT batiburrillo ANY>

Mixed

Puede tener caracteres de tipo datos o una mezcla de caracteres y sub-elementos especificados en la especificación de contenido mixto.

<!ELEMENT enfasis (#PCDATA)>

<!ELEMENT parrafo (#PCDATA|enfasis)*>

Por ejemplo, el primer elemento definido en el ejemplo (<enfasis>) puede contener datos de carácter (#PCDATA). Y el segundo (<parrafo>) puede contener tanto datos de carácter (#PCDATA) como sub-elementos de tipo <enfasis>.

Element

Sólo puede contener sub-elementos especificados en la especificación de contenido.

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

Para declarar que un tipo de elemento tenga contenido de elementos se especifica un modelo de contenido en lugar de una especificación de contenido mixto o una de las claves ya descritas.

nos vemos en la parte 5

domingo, 12 de agosto de 2012

DTD (DOCUMENT TYPE DEFINITIONS) III

XML válido

Los ficheros XML válidos son aquellos que tienen DTDs como el resto de las otras aplicaciones SGML. También deben estar bien-formados. Un fichero válido comienza como cualquier otro fichero SGML, con una Declaración de Tipo de Documento, una puede tener una declaración XML opcional:

<?xml version="1.0"?>

<!DOCTYPE anuncio SYSTEM "http://www.foo.org/ad.dtd">

<libro>

<titulo>...<imagen/>...</titulo>

<texto>...</texto>

</libro>

La Especificación XML define una Declaración SGML para XML que está fijada para todas las instancias (la declaración ha sido eliminada del texto de la especificación y ahora está en un documento aparte). Debe ser accesible una Versión XML de la DTD especificada para el procesador XML, bien localmente (ej. teniendo una copia en disco), o descargándola de la red. Esto puede especificarse mediante el URL para la DTD en un Identificador de Sistema (como en el ejemplo arriba). Es posible (algunos dirían preferible) proporcionar un Identificador Público Formal, pero si se utiliza, éste debe preceder al Identificador de Sistema, que debe ser dado (y sólo se utiliza la palabra clave PUBLIC), ej:

<!DOCTYPE anuncio PUBLIC "-//Foo, Inc//DTD Anuncios//ES"

"http://www.foo.org/ad.dtd">

ó

<!DOCTYPE anuncio SYSTEM "http://www.foo.org/ad.dtd">

Los valores por defecto para el resto de los atributos de la Declaración XML son VERSION="1.0" y ENCODING="UTF-8".

La DTD puede residir en un fichero externo, y quizá compartido por varios (puede que miles) de documentos. O bien, puede estar contenida en el propio documento XML, como parte de su declaración de tipo de documento.

Veamos un ejemplo:

<!DOCTYPE etiqueta[

<!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)>

<!ELEMENT nombre (#PCDATA)>

<!ELEMENT calle (#PCDATA)>

<!ELEMENT ciudad (#PCDATA)>

<!ELEMENT pais (#PCDATA)>

<!ELEMENT codigo (#PCDATA)>

]>

<etiqueta>

<nombre>Pepe García</nombre>

<calle>C/Ronda, 3</calle>

<ciudad>Armilla</ciudad>

<pais>España</pais>

<codigo>18465</codigo>

</etiqueta>

La declaración del tipo de documento comienza en la primera línea y termina con "]>". Las declaraciones DTD son las líneas que empiezan con "<!ELEMENT" y se denominan declaraciones de tipo elemento. También se pueden declarar atributos, entidades y anotaciones para una DTD.

En el ejemplo anterior, todas las declaraciones DTD que definen "etiqueta" residen dentro del documento. Sin embargo, la DTD se puede definir parcial o completamente en otro lugar. Por ejemplo:

<?xml version="1.0"?>

<!DOCTYPE coche SYSTEM "http://www.sitio.com/dtd/coche.dtd">

<coche>

<modelo>...</modelo>

...

</coche>

nos vemos en la parte 4

sábado, 11 de agosto de 2012

DTD (DOCUMENT TYPE DEFINITIONS) II

Documentos 'bien-formados'

Todos los documentos XML deben estar 'bien-formados':

  • si no se utiliza DTD, el documento debe comenzar con un Declaración de Documento único (SDD, Standalone Document Declaration) que indique:

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

<libro>

<texto>...<imagen/>...</texto>

</libro>

· todas las etiquetas deben estar balanceadas: esto es, todos los elementos que contengan datos de tipo carácter deben tener etiquetas de principio y fin (no está permitida la omisión excepto para los elementos vacíos, véase más abajo);

  • todos los valores de los atributos deben ir entrecomillados (el carácter comilla simple [el apóstrofe] puede utilizarse si el valor contiene caracteres comillas dobles, y viceversa): si necesitas ambos, utiliza ' y "
  • cualquier elemento VACÍO (p.e. aquellos que no tienen etiqueta final como <IMG>, <HR>, y <BR> y otros de HTML) deben terminar con '/>' o debes hacerlos no VACÍOS añadiéndoles una etiqueta de fin;

Ejemplo: <BR> se convertirá en <BR/> o en <BR></BR>.

  • no debe haber etiquetas aisladas (< ó &) en el texto (p.e. debe darse como &lt; y &amp;), y la secuencia ]]> debe darse como ]]&gt; si no ocurre esto como final de una sección marcada como CDATA;
  • los elementos deben anidar dentro de sí sus propiedades (no se deben sobreponer etiquetas, como en el resto de SGML);
  • Los ficheros bien-formados sin-DTD pueden utilizar atributos en sus elementos, pero éstos deben ser todos del tipo CDATA, por defecto.

Los ficheros XML bien-formados y sin-DTD deben tener &lt;, &gt;, &apos;, &quot;, y &amp; predefinidos y disponibles para ser utilizados incluso sin DTD. Los ficheros XML válidos deben declararlos explícitamente si los utilizan.

nos vemos en la parte 3

viernes, 10 de agosto de 2012

DTD (DOCUMENT TYPE DEFINITIONS)

 

1. ¿Qué es un DTD? (DOCUMENT TYPE DEFINITIONS)

Un DTD es un conjunto de reglas sintácticas para definir etiquetas. Nos indica qué etiquetas se pueden usar en un documento, en qué orden deben aparecer, cuáles pueden aparecer dentro de otras, cuáles tienen atributos, etc.

Crear una definición del tipo de documento (DTD) es como crear nuestro propio lenguaje de marcado, para una aplicación específica. Por ejemplo, podríamos crear un DTD que defina una tarjeta de visita. A partir de ese DTD, tendríamos una serie de elementos XML que nos permitirían definir tarjetas de visita.

Originalmente los DTDs se desarrollaron para ser utilizados con SGML. Pueden ser parte del documento XML, pero se suele colocar aparte para utilizarlo en una serie de documentos.

Puesto que XML es un sistema para definir lenguajes, no puede tener un solo DTD (al contrario que HTML). En lugar de eso, quien necesite usar XML para intercambio de datos debe definir su propio DTD. Por ejemplo, el Wall Street Journal Interactive Edition tiene un DTD para especificar cada edición, con información sobre páginas, sumarios, etc.

Un problema que presentan los DTDs es que no siguen una sintaxis XML, sino una propia. Un grupo de desarrolladores han propuesto una alternativa a los DTDs, llamada esquemas ("schemas").

Básicamente, un esquema establece las reglas de un documento e indica qué etiquetas se pueden usar, sus atributos, las relaciones entre etiquetas, etc.

Un esquema, al contrario que un DTD, puede definir tipos de datos, lo cual es claramente beneficioso en el intercambio de datos, objetos o bases de datos.

2. Documentos XML "sin DTD", "válido" y "bien formado"

SGML utiliza Definiciones de Tipo de Documentos(DTD) para describir los elementos (etiquetas) disponibles en un tipo de documento específico. Sin embargo, el diseño y construcción de una DTD puede ser una tarea compleja y no trivial, por lo que XML ha sido diseñado para ser usado con o sin una DTD. Sin-DTD significa que puedes inventar etiquetas sin tener que definirlas formalmente.

Para que esto funcione, un fichero sin-DTD 'define' sus propias etiquetas, informalmente, por la existencia y la localización de elementos cuando son creados. Pero cuando una aplicación XML, como un visualizador encuentra un fichero sin DTD, necesita ser capaz de entender la estructura del documento que está leyendo, y dado que no tiene DTD que le informe al respecto, se han hecho algunas modificaciones en las reglas.

Por ejemplo, el elemento <IMG> de HTML se define como 'VACÍO': no tiene etiqueta de fin. Sin una DTD, una aplicación XML no tendría manera de conocer si debe esperar una etiqueta de fin para un determinado elemento, luego ha tenido que introducirse el concepto de 'bien-formado'. Esto hace el comienzo y fin de todos los elementos, y la presencia de elementos VACÍO completamente no ambigua.

nos vemos en la parte 2

Ejecución y depuración de ficheros XSL

 

Se muestran los pasos necesarios para aplicar la transformación definida en un fichero XSL sobre los datos de un fichero XML. Además, se muestra un ejemplo de depuración, donde se puede observar la localización de un error en un fichero XSL.

Diferentes atributos que puedes encontrar dentro de XML.

 

Atributos CDATA y NMTOKEN
Los atributos CDATA (character data) son los más sencillos, y pueden contener casi cualquier cosa. Los atributos NMTOKEN (name token) son parecidos, pero sólo aceptan los caracteres válidos para nombrar cosas (letras, números, puntos, guiones, subrayados y los dos puntos).


<!ATTLIST mensaje fecha CDATA #REQUIRED>
<mensaje fecha="15 de Julio de 1999">
<!ATTLIST mensaje fecha NMTOKEN #REQUIRED>
<mensaje fecha="15-7-1999">


Atributos enumerados y notaciones
Los atributos enumerados son aquellos que sólo pueden contener un valor de entre un número reducido de opciones.


<!ATTLIST mensaje prioridad (normal | urgente) normal>


Existe otro tipo de atributo parecido, llamado de notación (NOTATION). Este tipo de atributo permite al autor declarar que su valor se ajusta a una notación declarada.


<!ATTLIST mensaje fecha NOTATION (ISO-DATE | EUROPEAN-DATE) #REQUIRED>

Para declarar las notaciones, se utiliza "<!NOTATION", con una definición externa de la notación. La definición externa puede ser pública o un identificador del sistema para la documentación de la notación, una especificación formal o un asistente de la aplicación que contenga objetos representados en la notación.


<!NOTATION HTML SYSTEM "http://www.w3.org/Markup">
<!NOTATION HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


Atributos ID e IDREF
El tipo ID permite que un atributo determinado tenga un nombre único que podrá ser referenciado por un atributo de otro elemento que sea de tipo IDREF. Por ejemplo, para implementar un sencillo sistema de hipervínculos en un documento:


<!ELEMENT enlace EMPTY>
<!ATTLIST enlace destino IDREF #REQUIRED>
<!ELEMENT capitulo (parrafo)*>
<!ATTLIST capitulo referencia ID #IMPLIED>


En este caso, una etiqueta <enlace destino="seccion-3"> haría referencia a un <capitulo referencia="seccion-3">, de forma que el procesador XML lo podría convertir en un hipervínculo, u otra cosa.

Fuente