Introducción a XML III

Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0

Última entrega de la introducción a los documentos XML, en esta ocasión vamos a dar una pequeña explicación sobre cómo se validan los documentos XML.

Validadores:

 


Documentos de ejemplo disponibles para descargar en Ejemplos_XML.rar
DTD

<?xml versión = "1.0" encoding = "utf.8">
<registros>
<descripcion>Contiene inf. Sobre acceso…</descripcion>
	<datos>
		<usuario>Pepe</usuario>
		<hora>10:22</hora>
		<fecha>22/01/21</fecha>
	</datos>
	<datos>
		<usuario>…</usuario>
		<hora>…</hora>
		<fecha>…</fecha>
	</datos>
</registros>

*** Cada etiqueta “datos” representa una fila de la tabla, las etiquetas en su interior representan las columnas ***

Si el DTD es externo, el archivo xml además de tener su primera línea de referencia debe incluir una segunda que hace referencia al DTD.

Contenido del DTD:
Los elementos que describen el xml en un DTD empiezan por (para el caso del ejemplo anterior):

<!ELEMENT registros (descripción, datos)>
<!ELEMENT datos (usuario, hora, fecha)>

*** Esto se hace para todos los elementos complejos (que contienen etiquetas en su interior ***

<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT usuario (#PCDATA)>
<!ELEMENT hora (#PCDATA)>
<!ELEMENT fecha (#PCDATA)>

*** Indica el tipo de contenido de la etiqueta ***

XML Schema (XSD)
Sirve para validar un xml, al igual que el DTD.
Utilizan espacios de nombres como en C#. El sentido del uso de espacios de nombres es evitar duplicidad de nombres, de manera que siempre hay que especificar qué espacio de nombres se utiliza.

Nombre cualificado: cuando se indica la ruta completa del recurso que se utiliza, sin necesidad de utilizar el “using”.

Cada uno define su espacio de nombres, por lo tanto el uso de mayúsculas o minúsculas es de elección propia, aunque lo normal es que sea minúscula.

<xs:element name=”registros”>
<xs:ComplexType>
	<xs:sequence>
		<xs:element name=”descripcion” type=”xs: tipodedato“/>
		***Al indicar el tipo aseguramos que los datos sean correctos.***
		<xs:element name=”datos”>
			<xs:ComplexType>
				<xs:sequence>
					<xs:element name=”usuario” type=”xs: tipodedato”/>
					<xs:element name=”hora” type=”xs: tipodedato”/>
					<xs:element name=”fecha” type=”xs: tipodedato”/>
				</xs:sequence>
			</xs:ComplexType>
		</xs:element name= “datos>
	</xs:sequence>
</xs:ComplexType>
</xs:element name=”registros>

***Ejemplo en: Para_validar.xml, Para_validar.dtd y Para_validar.xsd***

NameSpace
Los espacios de nombre en xml proporcionan un método simple para cualificar nombres de elementos o atributos. A cada espacio de nombres se le asigna un identificador url que no tiene por qué ser válido.

Un espacio de nombres se declara utilizando una familia de atributos creada para eso.
El nombre de esos atributos debe ser “xmlns” u otros que tenga eso como prefijo. Estos atributos se pueden poner en cualquier orden, y además se les puede asignar un valor = “”. La declaración se hace uniendo el nombre del espacio de nombres a poner y el nombre del atributo con “:”, es decir, xmlns:nombre. Puede ser un espacio de nombres por defecto, y no necesita nombre, o puede nombrarse para utilizar uno específico.

El nombre se pondrá delante de todos los elementos que pertenezcan a ese espacio de nombres.

El valor de la uri es el verdadero nombre, lo que va después de xmlns es el alias. Por eso el alias no es obligatorio, pero la uri sí. La uri debe tener la característica de unicidad (única) y persistencia (acción de preservar la información de los datos de forma permanente). La uri no tiene la obligación de ser buena, puede no existir, pero sí debe ser única.

Ejemplo namespace sin alias (namespace por defecto):

xmlns=”proyectosimio.wordpress.com”

Ejemplo namespace con alias:

xmlns:xs=”http://www.w3.org/1999/html”
<libro> pertenece al namespace por defecto.
<xs:libro> no es igual al anterior, pertenece al namespace xs.

*** Ejemplo en: namespace.xml y namespace.dtd***
Los namespace por defecto se declaran sin alias, y los elementos que hayan por debajo sin alias pertenecen al namespace por defecto. También es posible declarar diversos namespace distintos.

Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0
The following two tabs change content below.
Reborn as IT Developer. Desarrollador Android y fundador de Proyecto Simio. "En realidad, yo no puedo enseñar nada a nadie, sólo puedo hacerles pensar." - Sócrates.

Deja un comentario