<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LaWebera.es &#187; XML y DTD</title>
	<atom:link href="http://www.lawebera.es/manuales/xml/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lawebera.es</link>
	<description>Otro sitio realizado con WordPress</description>
	<lastBuildDate>Thu, 02 Feb 2012 09:29:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>XML y DTD. Introducción a XML</title>
		<link>http://www.lawebera.es/manuales/xml/introduccion-xml.php</link>
		<comments>http://www.lawebera.es/manuales/xml/introduccion-xml.php#comments</comments>
		<pubDate>Sun, 01 Apr 2007 22:37:55 +0000</pubDate>
		<dc:creator>Verónica Milán</dc:creator>
				<category><![CDATA[XML y DTD]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/manuales/xml/intro-2.php</guid>
		<description><![CDATA[Introducci&#243;n al lenguaje XML (eXtensible Markup Languaje).]]></description>
			<content:encoded><![CDATA[<p><strong>DTD (Document Type Definition)</strong> es un estándar que nos permite  definir una gramática que deben cumplir nuestros documentos XML para  considerarlos válidos. Una definición DTD para n <a href="http://www.lawebera.es/manuales/xml/dtd.php">documentos XML</a>  especifica: qué elementos pueden existir en un documento XML, qué  atributos pueden tener éstos, qué elementos pueden o deben aparecer  contenidos en otros elementos y en qué orden.</p>
<p>Los parsers de XML que son capaces de validar documentos con DTD  leen esos documentos y el DTD asociado. En caso de que el documento XML  no cumpla los requerimientos que le impone el DTD, nos advertirán del  error y no validarán el documento.</p>
<p>Mediante los DTD  definimos cómo será nuestro dialecto de <a href="http://www.lawebera.es/manuales/xml/">XML</a> (recordad que nosotros  definimos qué etiquetas vamos a usar en nuestros documentos, qué  significado les damos, etc.). Esta capacidad de definir un dialecto  propio de XML es lo que permite que XML se denomine.</p>
<p>A  pesar de que DTD es un estándar que deberá ser sustituido por <a href="http://www.lawebera.es/manuales/xml/convenciones.php">XML  Schema</a>, sigue siendo muy usado. Además, su uso resulta más simple que  el de XML Schema. Por otro lado, es más compacto. A eso hay que añadir  que las mejoras que aporta XML Schema no son necesarias para la mayoría  de los usos. Con DTD se han definido multitud de dialectos de XML que  son usados ampliamente en Internet, como RDF para la web semántica,  MathML para documentos matemáticos, XML/EDI para intercambio de datos  electrónicamente para negocio, VoiceXML para aplicaciones que se  utilicen mediante voz o que hagan uso de ésta, WML para representar  documentos para los navegadores de dispositivos móviles como teléfonos,  etc.</p>
<p>Veamos un posible DTD para la receta del ejemplo que nos definirá la forma que deben tener las recetas escritas en Receta XML:</p>
<pre>&lt;!-- DTD de ejemplo para RecetaXML --&gt;

          &lt;!ELEMENT Receta (Nombre, Descripcion?,

          Ingredientes?, Instrucciones?)&gt;

          &lt;!ELEMENT Nombre (#PCDATA)&gt;

          &lt;!ELEMENT Descripcion (#PCDATA)&gt;

          &lt;!ELEMENT Ingredientes (Ingrediente*)&gt;

          &lt;!ELEMENT Ingrediente (Cantidad, Item)&gt;

          &lt;!ELEMENT Cantidad (#PCDATA)&gt;

          &lt;!ATTLIST Cantidad unidad CDATA #REQUIRED&gt;

          &lt;!ELEMENT Item (#PCDATA)&gt;

          &lt;!ATTLIST Item opcional CDATA “0”

          vegetariano CDATA “si”&gt;

          &lt;!ELEMENT Instructiones (Paso+)&gt;

          &lt;!ELEMENT Paso (#PCDATA)&gt;</pre>
<p>De este documento DTD podemos inferir una descripción de las reglas de validez que sea un poco más legible:</p>
<ul>
<li>Una receta consta de un nombre (obligatorio), una descripción  (opcional), unos ingredientes (opcionales) y unas instrucciones  (opcionales).</li>
<li>El nombre y la descripción pueden contener caracteres alfanuméricos (PCDATA corresponde a Parsed Character Data).</li>
<li>Los ingredientes son una lista de elementos ingrediente.</li>
<li>Un ingrediente consta de un ítem y la cantidad.</li>
<li>La cantidad es un valor alfanumérico, teniendo la etiqueta un  atributo, unidad que nos describe qué unidad de medida estamos  utilizando.</li>
<li>Un ítem de la receta consta del nombre (un valor alfanumérico) y  puede tener dos atributos: opcional (si el ingrediente es o no  obligatorio) y vegetariano (si el ingrediente es apto para  vegetarianos).</li>
<li>Las instrucciones de elaboración son una lista de pasos.</li>
<li>Un paso consta de un texto alfanumérico descriptivo del paso.</li>
</ul>
<p>Vamos a estudiar ahora la sintaxis de DTD para definir los dialectos XML.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/manuales/xml/introduccion-xml.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML y DTD. Documento bien formado</title>
		<link>http://www.lawebera.es/manuales/xml/dtd.php</link>
		<comments>http://www.lawebera.es/manuales/xml/dtd.php#comments</comments>
		<pubDate>Sun, 01 Apr 2007 22:10:37 +0000</pubDate>
		<dc:creator>Verónica Milán</dc:creator>
				<category><![CDATA[XML y DTD]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/manuales/xml/dtd.php</guid>
		<description><![CDATA[Tutorial que explica qu&#233; son los documentos bien formados en el lenguaje XML.]]></description>
			<content:encoded><![CDATA[<h2>A qué se llama documento bien formado</h2>
<p>El concepto de bien formado procede de las matemáticas, donde es factible escribir una expresión usando símbolos matemáticos como,</p>
<pre>1)1(--5(+=)4 &lt;3</pre>
<p>que, a pesar de estar formado por símbolos matemáticos, no significa nada, ya quen o sigue las convenciones y normas de escritura de expresiones matemáticas. Esta expresión matemática no está bien formada.</p>
<p>En <a href="http://www.lawebera.es/manuales/xml/">XML</a>, un <strong>documento bien formado</strong> es el que sigue las siguientes normas:</p>
<p>Todas las etiquetas cerradas: en <a href="http://www.lawebera.es/manuales/html/">HTML</a> podemos trabajar con un gran nivel de relajación de las normas sintácticas, lo cual nos permite dejar etiquetas (como &lt;B&gt; por ejemplo) abiertas a lo largo de todo el documento, o usando indiscriminadamente etiquetas como &lt;P&gt; sin cerrarlas con la correspondiente &lt;/P&gt;. XML no permite este nivel de relajación. Todas las etiquetas abiertas deben tener su  correspondiente etiqueta de cierre. Esto se debe a que las <strong>etiquetas en XML</strong> representan una información jerárquica que nos indica cómo se relacionan los diferentes elementos entre ellos. Si no cerramos las etiquetas, introducimos en esta representación una serie de ambigüedades que nos impedirían un procesamiento automático.</p>
<p>No puede haber solapamiento de etiquetas: una etiqueta que se abre dentro de otra etiqueta debe cerrarse antes de cerrar la etiqueta contenedora. Por ejemplo,</p>
<pre>&lt;Libro&gt;Platero y Yo&lt;Autor&gt;J. R.Jiménez&lt;/Libro&gt;&lt;/Autor&gt;</pre>
<p>no está bien formado porque Autor no se cierra dentro de Libro, que es donde debería cerrarse. La sentencia correcta sería:</p>
<pre>&lt;Libro&gt;Platero y Yo&lt;Autor&gt;J. R. Jiménez&lt;/Autor&gt;&lt;/Libro&gt;</pre>
<p>Es decir, la estructura del documento debe ser estrictamente jerárquica.</p>
<p>Los valores de los atributos deben estar entrecomillados; a diferencia de HTML, donde podemos poner atributos sin comillas. Por ejemplo:</p>
<pre>&lt;IMAGE src=img.jpg SIZE=10&gt;</pre>
<p>En XML todos los atributos deben estar entrecomillados. Los atributos anteriores quedarían,  pues, de la siguiente manera:</p>
<pre>&lt;IMAGE src=“img.jpg” SIZE=“10”&gt;.</pre>
<p>Los caracteres &lt;, &gt; y “ siempre representados por entidades de carácter: para representar estos caracteres (en el texto, no como marcas de etiqueta) debemos usar siempre las entidades de carácter especiales: <em>&lt;, &gt; y &#8220;</em>. Estos caracteres son especiales para XML.</p>
<h2>Bien formado equivale a analizable</h2>
<p>La importancia que reviste el hecho de que un documento esté o no bien formado en XML deriva del hecho de que un documento bien formado puede ser analizable sintácticamente o parseable (es decir, procesable automáticamente). Existen multitud de parsers (analizadores) en numerosos lenguajes de programación que nos permiten trabajar con los documentos XML. Los parsers de XML son capaces de detectar los errores estructurales de los documentos XML (es decir, si están o no bien formados) y notificárselo al programa. Esta funcionalidad es importantísima para un programador, ya que le libera de la tarea de detectar errores para encomendársela a un programa que lo hará por sí solo (el parser).</p>
<p>Algunos parsers van más allá de la simple capacidad de detectar si el documento está bien formado o no y son capaces de identificar los documentos válidos , entendiendo por válido el hecho de que la estructura, posición y número de etiquetas sean correctos y tengan sentido.</p>
<p>Imaginemos por un momento el siguiente pedazo de nuestro documento de recetas:</p>
<pre>&lt;Ingrediente&gt;

  &lt;Cantidad unidad=“pieza”&gt;3&lt;/Cantidad&gt;

  &lt;Cantidad unidad=“litro”&gt;4&lt;/Cantidad&gt;

  &lt;Item&gt;Patatas&lt;/Item&gt;

&lt;/Ingrediente&gt;</pre>
<p>Este XML está bien formado, sigue todas las normas para que lo esté, pero a pesar de ello no tiene ningún sentido. ¿Que significaría? Tenemos patatas en la receta, ¿pero en qué cantidad? En este caso el problema sería que tenemos un <strong>documento XML bien formado</strong>, pero que carece de utilidad, ya que no tiene sentido. Necesitamos indicar de alguna manera cómo controlar que un documento tenga sentido. En nuestro caso, tenemos que especificar que cada ingrediente tendrá sólo una etiqueta de tipo cantidad, que ésta tendrá un atributo opcional unidad y que no contendrá etiquetas anidadas. Para ello, XML nos proporciona un par de lenguajes de especificación de estructura del documento, XML Schema y <a href="http://www.lawebera.es/manuales/xml/introdtd.php">DTD</a>, que veremos posteriormente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/manuales/xml/dtd.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML y DTD. Espacios de nombres</title>
		<link>http://www.lawebera.es/manuales/xml/nombres.php</link>
		<comments>http://www.lawebera.es/manuales/xml/nombres.php#comments</comments>
		<pubDate>Sun, 01 Apr 2007 22:01:50 +0000</pubDate>
		<dc:creator>Verónica Milán</dc:creator>
				<category><![CDATA[XML y DTD]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/manuales/xml/nombres.php</guid>
		<description><![CDATA[Uso de los espacios de nombres en el lenguaje XML.]]></description>
			<content:encoded><![CDATA[<h2>Los espacios de nombres (namespaces)</h2>
<p><a href="http://www.lawebera.es/manuales/xml/">XML</a> es un estándar diseñado para permitir que se comparta  información con facilidad. ¿Qué pasaría si uniésemos información en XML  procedente de dos fuentes diferentes para enviarla a una tercera?  ¿Podríamos en ese caso tener algún conflicto por coincidencia del  nombre de las etiquetas? Imaginemos el siguiente caso: un proveedor de  Internet guarda todos sus datos en XML. La sección comercial almacena  la dirección de la vivienda del cliente en un campo llamado  &lt;direccion&gt;. Por otro lado, el servicio de asistencia al cliente  guarda en &lt;direccion&gt; la dirección de correo electrónico del  cliente, y finalmente el centro de control de red guarda en  &lt;direccion&gt; la dirección IP del ordenador del cliente. Si unimos  en un sólo fichero lo procedente de las tres divisiones de la empresa,  nos podemos encontrar con:</p>
<pre>&lt;cliente&gt;
...
&lt;direccion&gt;Calle Real&lt;/direccion&gt;
...
&lt;direccion&gt;ventas@cliente.com
Esta dirección de correo electrónico está
siendo protegida de "spam bots",
necesitas habilitar Javascript para poder verlo.
&lt;/direccion&gt;
...
lt;direccion&gt;192.168.168.192&lt;/direccion&gt;
...
&lt;/cliente&gt;</pre>
<p>Evidentemente en este caso tendríamos un problema, ya que no  podríamos distinguir el significado de &lt;direccion&gt; en cada uno de  los casos. Para ello, en 1999 el W3C definió una extensión de XML  llamada espacios de nombres (namespaces) que permite resolver  conflictos y ambigüedades de este tipo.</p>
<h2>Uso de los espacios de nombres</h2>
<p>Los espacios de nombres son un prefijo que ponemos a las <strong>etiquetas  de XML</strong> para indicar a qué contexto se refiere la etiqueta en cuestión.  En el ejemplo anterior podríamos definir:</p>
<p>&lt;red:direccion&gt;: para uso por el centro de control de red.<br />
&lt;aten:direccion&gt;: para uso por el servicio de atención al cliente.<br />
&lt;comer:direccion&gt;: para uso por el departamento comercial.</p>
<p>De esta forma, nuestro elemento queda compuesto así:</p>
<pre>&lt;cliente&gt;
...
&lt;comer:direccion&gt;Calle Real&lt;/comer:direccion&gt;
....
&lt;aten:direccion&gt;ventas@cliente.com
Esta dirección de correo electrónico
está siendo protegida de "spam bots",
necesitas habilitar Javascript para poder verlo.
&lt;/aten:direccion&gt;
....
&lt;red:direccion&gt;192.168.168.192&lt;/red:direccion&gt;
...
&lt;/cliente&gt;</pre>
<p>Para usar un espacio de nombres en un documento, debemos declararlo  previamente. Esta declaración puede tener lugar en el elemento raíz del  documento de la siguiente forma:</p>
<pre>&lt;?xml version=“1.0” encoding=“iso-8859-1”?&gt;
&lt;carteraclientes
xmlns:comer=“http://www.empresa.com/comercial”
xmlns:aten=“http://www.empresa.com/atencion”
xmlns:red=“http://www.empresa.com/red”&gt;
&lt;cliente&gt;
...
&lt;comer:direccion&gt;Calle Real&lt;/comer:direccion&gt;
...
&lt;aten:direccion&gt;ventas@cliente.com
Esta dirección de correo electrónico
está siendo protegida de "spam bots",
necesitas habilitar Javascript para poder verlo.
&lt;/aten:direccion&gt;
...
&lt;red:direccion&gt;192.168.168.192&lt;/red:direccion&gt;
...
&lt;/cliente&gt;
&lt;/carteraclientes&gt;</pre>
<p>La definición consta de unos atributos xmlns (XML namespace), donde  proporcionamos el prefijo que usaremos para el espacio de nombres y una  URI (Uniform Resource Identifier) que será un identificador único del  espacio de nombres.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/manuales/xml/nombres.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML y DTD. Introducción a DTD</title>
		<link>http://www.lawebera.es/manuales/xml/introdtd.php</link>
		<comments>http://www.lawebera.es/manuales/xml/introdtd.php#comments</comments>
		<pubDate>Sun, 01 Apr 2007 21:41:36 +0000</pubDate>
		<dc:creator>Verónica Milán</dc:creator>
				<category><![CDATA[XML y DTD]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/manuales/xml/introdtd.php</guid>
		<description><![CDATA[Introducci&#243;n al uso de los DTD (document type definition) en el lenguaje XML para su validaci&#243;n.]]></description>
			<content:encoded><![CDATA[<h2>Introducción al estándar DTD.</h2>
<p><strong>DTD (Document Type Definition)</strong> es un estándar que nos permite  definir una gramática que deben cumplir nuestros documentos XML para  considerarlos válidos. Una definición DTD para n <a href="http://www.lawebera.es/manuales/xml/introduccion-xml.php">documentos XML</a>  especifica: qué elementos pueden existir en un documento XML, qué  atributos pueden tener éstos, qué elementos pueden o deben aparecer  contenidos en otros elementos y en qué orden.</p>
<p>Los parsers de <strong>XML</strong> que son capaces de validar <a href="http://www.lawebera.es/manuales/xml/dtd.php">documentos con DTD</a>  leen esos documentos y el DTD asociado. En caso de que el documento XML  no cumpla los requerimientos que le impone el DTD, nos advertirán del  error y no validarán el documento.</p>
<p>Mediante los DTD  definimos cómo será nuestro dialecto de XML (recordad que nosotros  definimos qué etiquetas vamos a usar en nuestros documentos, qué  significado les damos, etc.). Esta capacidad de definir un dialecto  propio de XML es lo que permite que XML se denomine.</p>
<p>A  pesar de que <strong>DTD</strong> es un estándar que deberá ser sustituido por <a href="http://www.lawebera.es/manuales/xml/convenciones.php">XML  Schema</a>, sigue siendo muy usado. Además, su uso resulta más simple que  el de XML Schema. Por otro lado, es más compacto. A eso hay que añadir  que las mejoras que aporta XML Schema no son necesarias para la mayoría  de los usos. Con DTD se han definido multitud de dialectos de XML que  son usados ampliamente en Internet, como RDF para la web semántica,  MathML para documentos matemáticos, XML/EDI para intercambio de datos  electrónicamente para negocio, VoiceXML para aplicaciones que se  utilicen mediante voz o que hagan uso de ésta, WML para representar  documentos para los navegadores de dispositivos móviles como teléfonos,  etc.</p>
<p>Veamos un posible DTD para la receta del ejemplo que nos definirá la forma que deben tener las recetas escritas en Receta XML:</p>
<pre>&lt;!-- DTD de ejemplo para RecetaXML --&gt;
&lt;!ELEMENT Receta (Nombre, Descripcion?,

Ingredientes?, Instrucciones?)&gt;

&lt;!ELEMENT Nombre (#PCDATA)&gt;

&lt;!ELEMENT Descripcion (#PCDATA)&gt;

&lt;!ELEMENT Ingredientes (Ingrediente*)&gt;

&lt;!ELEMENT Ingrediente (Cantidad, Item)&gt;

&lt;!ELEMENT Cantidad (#PCDATA)&gt;

&lt;!ATTLIST Cantidad unidad CDATA #REQUIRED&gt;

&lt;!ELEMENT Item (#PCDATA)&gt;

&lt;!ATTLIST Item opcional CDATA “0”

vegetariano CDATA “si”&gt;

&lt;!ELEMENT Instructiones (Paso+)&gt;

&lt;!ELEMENT Paso (#PCDATA)&gt;</pre>
<p>De este documento DTD podemos inferir una descripción de las reglas de validez que sea un poco más legible:</p>
<ul>
<li> Una receta consta de un nombre (obligatorio), una descripción  (opcional), unos ingredientes (opcionales) y unas instrucciones  (opcionales).</li>
<li>El nombre y la descripción pueden contener caracteres alfanuméricos (PCDATA corresponde a Parsed Character Data).• Los ingredientes son una lista de elementos ingrediente.</li>
<li>Un ingrediente consta de un ítem y la cantidad.</li>
<li>La cantidad es un valor alfanumérico, teniendo la etiqueta un  atributo, unidad que nos describe qué unidad de medida estamos  utilizando.</li>
<li>Un ítem de la receta consta del nombre (un valor alfanumérico) y  puede tener dos atributos: opcional (si el ingrediente es o no  obligatorio) y vegetariano (si el ingrediente es apto para  vegetarianos).</li>
<li>Las instrucciones de elaboración son una lista de pasos.</li>
<li>Un paso consta de un texto alfanumérico descriptivo del paso.</li>
<li>Vamos a estudiar ahora la sintaxis de DTD para definir los dialectos XML.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/manuales/xml/introdtd.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XML y DTD. Convenciones sintácticas y validación</title>
		<link>http://www.lawebera.es/manuales/xml/convenciones.php</link>
		<comments>http://www.lawebera.es/manuales/xml/convenciones.php#comments</comments>
		<pubDate>Sun, 01 Apr 2007 21:13:19 +0000</pubDate>
		<dc:creator>Verónica Milán</dc:creator>
				<category><![CDATA[XML y DTD]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/manuales/xml/convenciones.php</guid>
		<description><![CDATA[Como comprobar la validez de un documento con XML y DTD.]]></description>
			<content:encoded><![CDATA[<h2>Validación: DTD y XML Schema</h2>
<p>Como hemos visto, XML posibilita la comprobación automática de la  correcta forma de un documento, pero sin información adicional es  imposible comprobar la validez de éste a partir del propio documento.  Para ello, el W3C ha desarrollado algunos estándares de XML que nos  permiten validar un documento a partir de una especificación formal de  cómo debe ser éste. Dichos estándares son DTD y XSchema.</p>
<p>DTD es un estándar antiguo, derivado de SGML y que adolece de  algunas deficiencias graves, siendo la más grave de ellas el hecho de  no estar escrito en XML. XSchema, por otro lado, es un estándar  relativamente moderno, muy potente y extensible, que además está  escrito en XML íntegramente.</p>
<h3>Las convenciones sintácticas de DTD</h3>
<p>Como hemos visto, la sintaxis de DTD no resulta evidente a primera  vista. Pese a ello, tampoco es excesivamente compleja. El primer paso  para entenderla es disponer de las definiciones y usos de los  diferentes símbolos usados, que podemos ver en la tabla siguiente:</p>
<table>
<tr>
<td>Símbolo</td>
<td>Descripción</td>
</tr>
<tr>
<td>()</td>
<td>Los paréntesis agrupan subetiquetas<br />
&lt;!ELEMENT Ingrediente (Cantidad,Item)&gt;</td>
</tr>
<tr>
<td>,</td>
<td>Ordenación exacta de los elementos<br />
(Nombre, Descripcion?,<br />
Ingredientes?, Instrucciones?)</td>
</tr>
<tr>
<td>|</td>
<td>Uno sólo de los elementos indicados<br />
(Cocer | Freir)<br />
Si no indicamos nada los elementos aparecen una sola vez<br />
(Cantidad, Item)</td>
</tr>
<tr>
<td>+</td>
<td>Una o más veces<br />
Paso+</td>
</tr>
<tr>
<td>?</td>
<td>Elemento opcional<br />
Instrucciones?</td>
</tr>
<tr>
<td>*</td>
<td>Cero o más veces<br />
Ingrediente*</td>
</tr>
<tr>
<td>#PCDATA</td>
<td>Parsed Character Data<br />
&lt;!ELEMENT Item (#PCDATA)&gt;</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/manuales/xml/convenciones.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML y DTD. Elemento  ELEMENT</title>
		<link>http://www.lawebera.es/manuales/xml/element.php</link>
		<comments>http://www.lawebera.es/manuales/xml/element.php#comments</comments>
		<pubDate>Sun, 01 Apr 2007 20:43:45 +0000</pubDate>
		<dc:creator>Verónica Milán</dc:creator>
				<category><![CDATA[XML y DTD]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/manuales/xml/element.php</guid>
		<description><![CDATA[Usos del elemento ELEMENT en XML. Elementos vac&#237;os, s&#243;lo con caracteres, subelementos, etc.]]></description>
			<content:encoded><![CDATA[<h2>Qué es el elemento ELEMENT del lenguaje XML</h2>
<p>Los elementos de DTD llamados ELEMENT nos definen una etiqueta de nuestro dialecto de XML. Por ejemplo:</p>
<pre>&lt;!ELEMENT Receta (Nombre, Descripcion?,
  Ingredientes?, Instrucciones?)&gt;</pre>
<p>Define la etiqueta Receta, especificando qué contienen las  subetiquetas: Nombre, Descripción, Ingredientes e Instrucciones, y  agregando que estas tres últimas son opcionales (como indica el símbolo  ?). La definición de ELEMENT es la siguiente:</p>
<pre>&lt;!ELEMENT nombre categoria&gt;
  &lt;!ELEMENT nombre (contenido)&gt;</pre>
<h3>Elementos vacíos</h3>
<p>Los elementos vacíos se declaran empleando la categoría EMPTY.</p>
<pre> &lt;!ELEMENT nombre EMPTY&gt;</pre>
<p>Este elemento nombre, en XML se usaría así:</p>
<pre> &lt;nombre /&gt;</pre>
<h3>Elementos con sólo caracteres</h3>
<p>Los elementos que sólo contendrán datos alfanuméricos se declaran<br />
usando #PCDATA entre paréntesis.</p>
<pre> &lt;!ELEMENT nombre (#PCDATA)&gt;</pre>
<h3>Elementos con cualquier contenido</h3>
<p>Los elementos que declaremos usando ANY como indicador de contenido pueden contener cualquier combinación de datos parseables:</p>
<pre> &lt;!ELEMENT nombre ANY&gt;</pre>
<h3>Elementos con subelementos (secuencias)</h3>
<p>Los elementos con uno o más elementos hijos se definen con el nombre de los elementos hijos entre paréntesis:</p>
<pre> &lt;!ELEMENT nombre (hijo1)&gt;
  &lt;!ELEMENT nombre (hijo1, hijo2, ......)&gt;</pre>
<p>Por ejemplo:</p>
<pre> &lt;!ELEMENT coche (marca, matricula, color)&gt;</pre>
<p>Los hijos que se declaran como una secuencia de elementos separados  por comas deben aparecer en el mismo orden en el documento. Los  elementos hijo también deben declararse en el documento DTD. Estos  elementos hijo pueden, a su vez, tener elementos hijo. La declaración  completa de coche sería entonces:</p>
<pre> &lt;!ELEMENT coche (marca, matricula, color)&gt;
  &lt;!ELEMENT marca (#PCDATA)&gt;
  &lt;!ELEMENT matricula (#PCDATA))&gt;
  &lt;!ELEMENT color (#PCDATA)&gt;</pre>
<h3> Cardinalidad de las ocurrencias de elementos</h3>
<p>La siguiente declaración nos indica que el elemento hijo sólo puede ocurrir una vez dentro del elemento padre:</p>
<pre> &lt;!ELEMENT nombre (hijo)&gt;</pre>
<p>Si deseamos que el elemento hijo aparezca más de una vez y como mínimo una vez:</p>
<pre> &lt;!ELEMENT nombre (hijo+)&gt;</pre>
<p>Si deseamos que pueda aparecer cualquier número de veces (incluyendo la posibilidad de que no aparezca ninguna):</p>
<pre> &lt;!ELEMENT nombre (hijo*)&gt;</pre>
<p>Si sólo deseamos que pueda aparecer una vez, pero que no sea obligatorio:</p>
<pre> &lt;!ELEMENT nombre (hijo?)&gt;</pre>
<h3>Elementos con contenido mixto</h3>
<p>Podemos declarar también elementos que contengan otros elementos hijos y/o datos alfanuméricos.</p>
<pre> &lt;!ELEMENT nombre (#PCDATA hijo hijo2)*&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/manuales/xml/element.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML y DTD. Elemento ATTLIST</title>
		<link>http://www.lawebera.es/manuales/xml/attlis.php</link>
		<comments>http://www.lawebera.es/manuales/xml/attlis.php#comments</comments>
		<pubDate>Sun, 01 Apr 2007 20:12:08 +0000</pubDate>
		<dc:creator>Verónica Milán</dc:creator>
				<category><![CDATA[XML y DTD]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/manuales/xml/attlis.php</guid>
		<description><![CDATA[Atributos de ELEMENT; qu&#233; es el elemento ATTLIST en XML. Sintaxis.]]></description>
			<content:encoded><![CDATA[<h2>Qúe es el elemento ATTLIST del lenguaje XML.</h2>
<p>Como ya hemos visto, los elementos en XML pueden tener atributos.  Evidentemente, en DTD disponemos de un mecanismo para indicar qué  atributos puede tener un <a href="http://www.lawebera.es/manuales/xml/element.php">ELEMENT</a>, de qué tipo, si son o no  obligatorios, etc. Para ello disponemos del elemento ATTLIST, cuya  sintaxis es:</p>
<pre>&lt;!ATTLIST elemento atributo tipo-atributo valor-defecto&gt;</pre>
<p>Un ejemplo de uso sería:</p>
<pre>&lt;!ATTLIST pago metodo CDATA “contra-reembolso” &gt;</pre>
<p>Y su uso en XML:</p>
<pre>&lt;pago metodo=“contra-reembolso” /&gt;</pre>
<p>El tipo de atributo debe ser uno de los de la lista:</p>
<table>
<tr>
<td>Valor</td>
<td>Descripción</td>
</tr>
<tr>
<td>CDATA</td>
<td>El valor son caracteres alfanuméricos</td>
</tr>
<tr>
<td>(v1 | v2 | ..)</td>
<td>El valor será uno de la lista explicitada</td>
</tr>
<tr>
<td>ID</td>
<td>El valor será un identificador único</td>
</tr>
<tr>
<td>IDREF</td>
<td>El valor es el ID de otro elemento</td>
</tr>
<tr>
<td>IDREFS</td>
<td>El valor es una lista de ID otros elementos</td>
</tr>
<tr>
<td>NMTOKEN</td>
<td>El valor es un nombre XML válido</td>
</tr>
<tr>
<td>NMTOKENS</td>
<td>El valor es una lista de nombres XML válidos</td>
</tr>
<tr>
<td>ENTITY</td>
<td>El valor es una entidad</td>
</tr>
<tr>
<td>ENTITIES</td>
<td>El valor es una lista de entidades</td>
</tr>
<tr>
<td>NOTATION</td>
<td>El valor es el nombre de una notación</td>
</tr>
<tr>
<td>xml:</td>
<td>El valor es un valor XML predefinido</td>
</tr>
<tr>
<td>valor</td>
<td>El valor por defecto del atributo</td>
</tr>
<tr>
<td>#REQUIRED</td>
<td>El valor del atributo debe aparecer obligatoriamente<br />
en el elemento</td>
</tr>
<tr>
<td>#IMPLIED</td>
<td>El atributo no tiene por qué ser incluido</td>
</tr>
<tr>
<td>#FIXED valor</td>
<td>El valor del atributo es fijo</td>
</tr>
</table>
<h3> Valor por defecto</h3>
<p>En el siguiente ejemplo:</p>
<pre> &lt;!ELEMENT pago EMPTY&gt;
  &lt;!ATTLIST pago metodo CDATA “contra-reembolso” &gt;</pre>
<p>El siguiente XML se considera válido:</p>
<pre> &lt;pago /&gt;</pre>
<p>En este caso, donde no especificamos valor para método, éste contendrá el valor por defecto de contra-reembolso.</p>
<h3>Sintaxis de #IMPLIED</h3>
<p>En el siguiente ejemplo:</p>
<pre> &lt;!ELEMENT pago EMPTY&gt;
  &lt;!ATTLIST pago metodo CDATA #IMPLIED &gt;</pre>
<p>Validará correctamente el siguiente XML:</p>
<pre> &lt;pago metodo=“tarjeta” /&gt;
  &lt;pago /&gt;</pre>
<p>Usaremos, pues, #IMPLIED en aquellos casos en los que no queremos  forzar al usuario a usar atributos pero no podemos poner valores por  defecto.</p>
<h3>Sintaxis de #REQUIRED</h3>
<p>En el siguiente ejemplo:</p>
<pre> &lt;!ELEMENT pago EMPTY&gt;
  &lt;!ATTLIST pago metodo CDATA #REQUIRED &gt;</pre>
<p>Validará correctamente el siguiente XML:</p>
<pre> &lt;pago metodo=“tarjeta” /&gt;</pre>
<p>pero no validará:</p>
<pre> &lt;pago /&gt;</pre>
<p>Usaremos #REQUIRED en aquellos casos en los que no podemos  proporcionar un valor por defecto, pero deseamos que el atributo  aparezca y se le asigne algún valor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/manuales/xml/attlis.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XML y DTD. Vincular un DTD con un documento</title>
		<link>http://www.lawebera.es/manuales/xml/vincular.php</link>
		<comments>http://www.lawebera.es/manuales/xml/vincular.php#comments</comments>
		<pubDate>Sun, 01 Apr 2007 14:53:45 +0000</pubDate>
		<dc:creator>Verónica Milán</dc:creator>
				<category><![CDATA[XML y DTD]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/manuales/xml/vincular.php</guid>
		<description><![CDATA[Tutorial para aprender a vincular un documento XML a un DTD.]]></description>
			<content:encoded><![CDATA[<h2>Cómo vincular un DTD con un documento XML</h2>
<p>Para que un documento XML quede vinculado a un DTD determinado,  tenemos dos opciones: incluir el DTD en el documento XML o usar una  referencia externa al DTD. La primera opción es la más fácil de usar,  pero la que presenta más inconvenientes, ya que aumenta el tamaño de  los documentos XML y complica su mantenimiento, puesto que un cambio en  el DTD implica revisar todos los documentos en los que lo hemos  incluido. El formato de un documento XML donde hubiésemos incluido  sería:</p>
<pre>&lt;?xml version="1.0"?&gt;
	&lt;!DOCTYPE Receta [
	&lt;!ELEMENT Receta (Nombre, Descripcion?,
	Ingredientes?, Instrucciones?)&gt;
	&lt;!ELEMENT Nombre (#PCDATA)&gt;
	&lt;!ELEMENT Descripcion (#PCDATA)&gt;
	&lt;!ELEMENT Ingredientes (Ingrediente)*&gt;
	&lt;!ELEMENT Ingrediente (Cantidad, Item)&gt;
	&lt;!ELEMENT Cantidad (#PCDATA)&gt;
	&lt;!ATTLIST Cantidad unidad CDATA #REQUIRED&gt;
	&lt;!ELEMENT Item (#PCDATA)&gt;
	&lt;!ATTLIST Item opcional CDATA "0"
	vegetariano CDATA "si"&gt;
	&lt;!ELEMENT Instructiones (Paso)+&gt;
	&lt;!ELEMENT Paso (#PCDATA)&gt;
	]&gt;
	&lt;Receta&gt;
	&lt;Nombre&gt;Tortilla de patatas&lt;/NOMBRE&gt;
	&lt;Descripcion&gt;
	La tradicional y típica tortilla de patatas, tal
	como la hacen todas las madres.
	&lt;/Descripcion&gt;
	&lt;Ingredientes&gt;
	&lt;Ingrediente&gt;
	&lt;Cantidad unidad="pieza"&gt;3&lt;/Cantidad&gt;
	&lt;Item&gt;Patata&lt;/Item&gt;
	&lt;/Ingrediente&gt;
	&lt;Ingrediente&gt;
	&lt;Cantidad unidad="pieza"&gt;2&lt;/Cantidad&gt;
	&lt;Item&gt;Huevos&lt;/Item&gt;
	&lt;/Ingrediente&gt;
	&lt;Ingrediente&gt;
	&lt;Cantidad unidad="litro"&gt;0.1&lt;/Cantidad&gt;
	&lt;Item&gt;Aceite&lt;/Item&gt;
	&lt;/Ingrediente&gt;
	&lt;/Ingredientes&gt;
	&lt;Instrucciones&gt;
	&lt;Paso&gt;
	Pelar y cortar la patata en rodajas
	&lt;/Paso&gt;
	&lt;Paso&gt;
	Poner aceite en una paella
	&lt;/Paso&gt;
	&lt;!-- ... ... --&gt;
	&lt;/Instrucciones&gt;
	&lt;/Receta&gt;</pre>
<p>Podemos referenciar un DTD externo al documento XML. Para ello  disponemos de dos <strong>tipos de referencias</strong> posibles: públicas o privadas.  Un ejemplo de referencia privada es el siguiente:</p>
<pre>&lt;?xml version=“1.0”?&gt;
	&lt;!DOCTYPE Receta SYSTEM “receta.dtd”&gt;
	&lt;Receta&gt;
	...</pre>
<p>Y otro, usando ahora una referencia externa pública:</p>
<pre>&lt;?xml version=“1.0”?&gt;
	&lt;!DOCTYPE Receta
	PUBLIC “-//W3C//DTD XHTML 1.0 STRICT/EN”
	“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”&gt;
	&lt;Receta&gt;
	...</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/manuales/xml/vincular.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 5/19 queries in 0.012 seconds using disk: basic

Served from: www.lawebera.es @ 2012-02-08 08:29:18 -->
