Guía de Validación XML y DTD
Guía de Validación XML y DTD
▪ La declaración del tipo de documento: es la parte donde decimos a qué tipo pertenece nuestro documento,
y se incluye en el prólogo del documento XML. Utiliza la etiqueta <!DOCTYPE>
▪ La definición del tipo de documento: es la parte donde se definen todas la reglas que aplican al tipo
mediante ciertas estructuras especiales denominadas declaraciones de marcado. Toda declaración de tipo
propiamente dicha para un documento se complementa con una definición del tipo (abreviada como DTD)
que asocia al tipo las cualidades que posee. La DTD define los tipos de elementos, atributos, entidades y
notaciones que se podrán utilizar en el documento, así como ciertas restricciones estructurales y de
contendido, valores por defecto, etc. Para formalizar todo ello XML provee ciertas estructuras especiales, las
llamadas declaraciones de marcado y que pertenecen a alguno de los siguientes tipos:
▪ Internas: se encuentran dentro del propio documento XML; forman lo que se denomina el subconjunto
interno.
▪ Externas: se encuentran en un fichero separado; forman el subconjunto externo
▪ Una combinación de ambas. Hay parte fuera y parte dentro. Tienen preferencia las internas sobre las
externas.
Validación XML 1
En el ejemplo que se muestra a continuación se destaca un DTD interno (incluido dentro del propio documento ):
]>
<Casas_Rurales>
...
</Casas_Rurales>
El subconjunto interno contiene declaraciones que pertenecen únicamente a un documento, que son específicas para
él y que no es posible compartir.
Para ilustrar esto, vamos a añadir algunas declaraciones de tipos de elementos internas al ejemplo anterior. No
es necesario entender todas las declaraciones en este momento, ya las iremos explicando todo poco a poco.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Casas_Rurales [
<!ELEMENT Casas_Rurales (Casa)*>
]>
<Casas_Rurales>
...
</Casas_Rurales>
La definición del tipo anterior especifica que el tipo de documento Casas_Rurales está formado por elementos de
tipo Casa. Los elementos de tipo Casa contienen a su vez elementos de tipo Dirección, Descripción, Estado y Tamanio,
en este orden y sin faltar ninguno. El contenido de estos elementos está formado exclusivamente por datos carácter
(#PCDATA).
Para acabar de completar el documento XML del ejemplo, incluiremos el contenido del ejemplar del documento. Se
puede comprobar cómo el ejemplar cumple con las restricciones de tipo, estructura y contenido especificadas.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE Casas_Rurales [
<!ELEMENT Casas_Rurales (Casa)*>
]>
<Casas_Rurales>
<Casa>
<Dirección>Calle Las Palmas 23. La Sagra. Toledo</Dirección>
<Descripción>
Se trata de una casa del siglo XVII, ...
</Descripción>
<Estado>El estado de conservación es magnífico, ...</Estado>
<Tamanio>La casa tiene 259 metros cuadrados, ...</Tamanio>
</Casa>
<Casa>
<Dirección>Calle Or 5, Fregenal de la Sierra. Badajoz
</Dirección>
<Descripción>
De arquitectura espectacular la casa ...
</Descripción>
<Estado>Recientemente restaurada su estado actual es ...
</Estado>
<Tamanio>La superficie habitable es de ...</Tamanio>
</Casa>
</Casas_Rurales>
Validación XML 3
2.3.1 Subconjunto externo
Las declaraciones de marcado también pueden encontrarse fuera del documento XML. Estas declaraciones de
marcado externas pueden referenciarse de varias maneras:
● Mediante una declaración explícita de subconjunto externo. Mediante entidades parámetro externas.
● La segunda forma se estudiará más adelante en el apartado dedicado a las entidades y a las declaraciones de
entidades.
Normalmente el subconjunto externo está formado por declaraciones comunes que se comparten entre múltiples
documentos XML que pertenecen al mismo tipo. Se escriben y modifican una vez en lugar de tener que repetirla y
modificarla muchas veces.
Ahora los corchetes pierden su sentido y a cambio se impone utilizar algún sistema de referencia que permita
localizar las declaraciones de marcado externas. Para el subconjunto externo la declaración del tipo del documento
puede tomar alguna de las siguientes formas:
<!DOCTYPE NombreXML SYSTEM "URI" >
<!DOCTYPE NombreXML PUBLIC "id_publico" "URI" >
En la primera, detrás de la palabra SYSTEM se especifica un URI donde se pueden encontrar las declaraciones.
En la segunda forma se especifica también un identificador, que puede ser utilizado por el procesador XML para
intentar generar un URI alternativo, posiblemente basado en alguna tabla. Hay que notar que también es necesario
(obligatorio) especificar un URI.
Podemos transformar el ejemplo de las casas rurales para que todas las declaraciones de los elementos sean
externas al documento. El URI en este ejemplo es absoluto pero podría haberse empleado uno relativo, si se desea
probar el ejemplo se puede cambiar el URI a uno relativo que incluyera únicamente el nombre del fichero
casasrurales.dtd, situando ambos ficheros en el mismo directorio.
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE Casas_Rurales SYSTEM "http://www.casasrurales.com/casasrurales.dtd">
<Casas_Rurales>
...
</Casas_Rurales>
La extensión ".dtd" del archivo es sólo una convención, no hay ninguna obligación en que así sea.
Recordemos que un documento XML puede incluir en la declaración XML el campo “standalone”, con el que
indicamos si el documento es autónomo o no. Observar que si se incluye un subconjunto externo el documento ya no
puede ser autónomo, y por tanto el valor de “standalone” debe ser “no”, que es el valor por defecto.
Validación XML 4
Donde el nombre_elemento tiene que ser el mismo que el correspondiente del documento XML sin los signos < y >.
El modelo de contenido puede contener:
▪ ANY. Es un comodín que no debe aparecer en el DTD definitivo. Se utiliza al construir un DTD para que valide
en cualquier caso.
▪ EMPTY. Describe un elemento vacío y sin descendientes. El elemento puede tener atributos.
▪ Datos de cualquier tipo que no contengan etiquetas. Se utiliza para ello (#PCDATA). Los elementos
declarados como de tipo PCDATA no pueden contener los caracteres siguientes:
▪ Elementos descendientes. Se ponen entre paréntesis y siguen las reglas siguientes:
▪ Se indica la cardinalidad de los elementos (el número de veces que aparecen los elementos)
por ciertos símbolos:
▪ ? El elemento puede aparecer 0 o 1 vez.
▪ * El elemento puede aparecer 0 a N veces.
▪ + El elemento puede aparecer 1 a N veces.
▪ Se indican la secuencia de elementos que deben aparecer o los elementos alternativos. Se
utilizan las reglas siguientes:
▪ A,B indica que el elemento B aparecerá a continuación del A.
▪ A|B indica que aparecerá el elemento A o el elemento B pero no ambos.
▪ Se pueden combinar los símbolos de cardinalidad con los de secuencia.
2.4.6 Ejercicios
2.4.6.1 Escribir la DTD que permita validar el documento XML que se muestra a continuación. Hacer dos versiones
en cada caso: DTD externa e interna.
<etiqueta>
<nombre>Roberto García</nombre>
<ciudad>Coslada</ciudad>
<pais>España</pais>
<codigo>39343</codigo>
</etiqueta>
2.4.6.2 Escribir la DTD que permita validar el documento XML que se muestra a continuación. Suponer que puede
haber varias etiquetas “para”. Hacer dos versiones en cada caso: DTD externa e interna.
DOCUMENTO 1:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE nota SYSTEM "nota.dtd">
<nota>
<para>Pedro</para>
<de>Laura</de>
<titulo>Recordatorio</titulo>
<contenido>A las 7:00 en la puerta del teatro</contenido>
</nota>
nombre_elemento es el nombre del elemento que tiene en XML y que tiene los atributos.
nombre_atributo es un nombre XML válido.
tipo_atributo puede ser
● CDATA: caracteres que no continen etiquetas.
<!ATTLIST perro fecha_nacimiento CDATA "23-02-1988">
Validación XML 6
● Enumerado: una lista de valores(separados por | y de tipo token) entre los cuales el
atributo debe tomar uno.
<!ATTLIST nom_elemento atributo (valor1 | valor2 |...)valor_por_defecto>
Ejemplo
<!ATTLIST perro sexo (macho | hembra) "macho" >
● ID:identificador único. Se usa para identificar elementos. Dos elementos no pueden
tener el mismo ID. Sólo pueden tene el caracter #IMPLIED o #REQUIRED. Un elemento
solo puede tener un ID y debe ser un nombre XML válido:
● IDREF: es el valor de un atributo ID de otro elemento, que debe existir en el
documento XML.
caracter puede ser:
▪ Un valor textual entre comillas, que representa el valor por defecto del atributo.
▪ #IMPLIED, que indica que el atributo es de carácter opcional y no se le asigna ningún
valor por defecto.
▪ #REQUIRED, que indica que el atributo es de carácter obligatorio, pero no se le asigna un
valor por defecto.
▪ #FIXED, indica que el atributo es obligatorio y se le asigna una valor por defecto que
además es el único valor que puede tener el atributo.
2.5.1 Ejemplos
2.5.1.1 Regla para un semáforo que tiene un único atributo color
<!ELEMENT semaforo EMPTY>
<!ATTLIST semaforo color (rojo | amarillo | verde) "verde">
Los posibles valores son rojo, amarillo y verde y el valor por defecto es verde
<empleados>
</empleados>
2.5.2 Ejercicios
2.5.2.1 Escribir la DTD que permita validar el documento XML que se muestra a continuación. Hacer dos versiones
en cada caso: DTD externa e interna.
<lista_de_notas>
<nota>
<para>Pedro</para>
<de>Laura</de>
<titulo>Recordatorio</titulo>
<contenido>A las 7:00 pm en la puerta del teatro </contenido>
</nota>
<nota dia="23/01/2010" hora="13:15">
<para>Miguel</para>
<de>Juan</de>
<titulo>Informes</titulo>
<contenido>Te he dejado los informes en el casillero</contenido>
</nota>
</lista_de_notas>
2.5.2.2 Escribir la DTD que permita validar el documento XML que se muestra a continuación. Hacer dos versiones
en cada caso: DTD externa e interna.
<matricula>
Validación XML 7
<personal>
<dni>99223366M</dni>
<nombre>Juan Pardo Martín</nombre>
<titulacion>Ingeniería Informática</titulacion>
<curso_academico>1997/1998</curso_academico>
<domicilios>
<domicilio tipo="familiar">
<nombre>C/ Principal nº1</nombre>
</domicilio>
<domicilio tipo="habitual">
<nombre>C/ Secundaria nº2</nombre>
</domicilio>
</domicilios>
</personal>
<pago>
<tipo_matricula>Matrícula Ordinaria</tipo_matricula>
</pago>
</matricula>
2.5.2.3 Escribir la DTD que permita validar el documento XML que se muestra a continuación correspondiente a un
Se el documento XML indicado a continuación. Construir un documento XML con DTD interna y otro con
DTD externa. Comprobar la buena formación y la validez del documento en ambos casos. El DTD que
valide este documento debe tener en cuenta las siguientes características:
▪ El título original de una película sólo aparecerá cuando la película no sea española.
▪ Es posible que en un momento dado una pelicula esté pendiente de clasificación. En caso de que
esté clasificada siempre deberá indicar los años para los que se recomienda: tp (todos los públicos),
8, 12, 16 o 18.
▪ No siempre existe una web con la información de la película.
▪ Se quiere guardar información sobre el fichero gráfico que contiene el cartel de la película. Este
fichero no siempre está disponible.
▪ En caso de que no se proporcione el año de una película se asumirá que es el 2003.
▪ En el reparto deberá aparecer un actor como mínimo.
<cartelera>
<película código="p1" duración="152" año="2002">
<título>AQUELLAS JUERGAS UNIVERSITARIAS</título>
<título_original>Old School</título_original>
<nacionalidad>Estados Unidos</nacionalidad>
<género>Comedia</género>
<clasificación edad="tp"/>
<sinopsis>
Mitch, Frank y Beanie son tres amigos treintañeros cuyas vidas no son exactamente lo
que esperaban. Mitch tiene una novia ninfómana que se mete en la cama con el primero
que agarra. Frank se ha casado y su matrimonio nada
tiene que ver con las juergas salvajes que organizaban años atrás. Y Beanie es
un padre de familia que se muere por recuperar su alocada juventud. Pero las cosas
cambian cuando Beanie sugiere que creen su propia fraternidad, en la nueva casa que
Mitch tiene junto al campus de la universidad. Una ocasión para revivir tiempos
gloriosos, hacer nuevos amigos y de volver a sus viejas, salvajes y desmadradas juergas
de estudiantes.
</sinopsis>
<director>Todd Philips</director>
<reparto>
<actor>Luke Wilson</actor>
<actor>Will Farrel</actor>
<actor>Vince Vaughn</actor>
</reparto>
<web>http://www.uip.es</web>
<cartel>caratulas/Aquellas juergas.jpg</cartel>
</película>
<película código="p17" duración="06">
<título>EL ORO DE MOSCÚ</título>
Validación XML 8
<nacionalidad>España</nacionalidad>
<género>Comedia</género>
<sin_clasificar/>
<sinopsis>
Por una extraña coincidencia del destino, alguien recibe una información
extraconfidencial de un anciano en sus últimos segundos de vida: el secreto mejor
guardado de la Historia. El receptor, un trabajador de hospital, se lo comunica
secretamente a un supuesto amigo. Ambos inician una aventura rocambolesca y llena de
misterio. Ante la inutilidad de sus intentos y muy a
su pesar, tienen que recurrir a otras personas que así mismo van cayendo en el pozo sin
fondo que conlleva descifrar el enigma.
</sinopsis>
<director>Jesús Bonilla</director>
<reparto>
<actor>Jesús Bonilla</actor>
<actor>Santiago Segura</actor>
<actor>Alfredo Landa</actor>
<actor>Concha Velasco</actor>
<actor>Antonio Resines</actor>
<actor>Gabino Diego, María Barranco</actor>
<actor>María Barranco</actor>
</reparto>
</película>
</cartelera>
Validación XML 9
3 Referencia de XSDs. XML Schema Definition
3.1 Ventajas de XSD sobre DTD
▪ Un esquema es un documento XML y, por tanto, se puede comprobar que está bien formado.
▪ Tiene gran número de tipos de datos y atributos predefinidos que se pueden ampliar o restringir con la
creación de nuevos tipos.
▪ Se puede determinar con precisión la cardinalidad de un elemento, es decir, el número de veces que aparece
en un documento.
▪ Permite utilizar varios espacios de nombres, esto permite mezclar distintos vocabularios o juegos de etiquetas.
….
</xs:schema>
3.2.3 Elementos
<xs:element name=””>
</xs:element
</xs:element>
3.2.3.2 Elementos complejos ( puede contener atributos, elementos hijo y contenido mixto )
<xs:element name="">
<xs:complexType>
</xs:complexType>
</xs:element>
3.2.3.3 Secuencia ( xs:sequence )
Define una secuencia ordenenada de elementos, equivale a la “, “ en DTD
<xs:element name="emisor">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="CIF" type="xs:string"/>
<xs:element name="telefono" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
3.2.4 Atributos
Se utiliza la etiqueta <xs:attribute name=”” type=””> (no se cierra)
Reglas:
Validación XML 11
3.2.5 Tipos de datos simples ( Ver todos los tipos simples )
Los tipos de datos se asignan con el atributo type=
Tipo anyType
▪ Tipos cadena
Validación XML 12
3.2.6 Definición de tipos de datos
3.2.7 Tipos complejos
La forma más sencilla de crear un nuevo tipo es crear un elemento complexType al que se le asigna un nombre
mediante el atributo “name”. Ejemplo:
<xsd:complexType name=”precioInfo”>
<xsd:sequence>
<xsd:element ref=”precioTipo”/>
<xsd:element ref=”precioN”/>
</xsd:sequence>
</xsd:complexType>
Con esto creamos un tipo nuevo llamado “precioInfo” que está formado por una secuencia de dos elementos,
“precioTipo” y “precioN”, a los que referencia. Podremos utilizar este tipo que hemos creado para definir elementos,
por ejemplo:
<xsd:element name=”precio” type=”precioInfo”/>
Observamos que en la definición del elemento precio, el nombre del tipo “precioInfo” no lleva el prefijo “xsd”, porque
no pertenece al espacio de nombres del estándar XML Schema. La principal ventaja de definir tipos de datos propios
es, por un lado, que estos tipos se pueden utilizar donde se quiera, y además, que estos tipos se pueden utilizar como
tipos base para definir otros tipos.
3.2.8 Crear un tipo por restricción de un tipo simple predefinido (xsd:restriction) ( FACETAS )
La forma más sencilla de crear un nuevo tipo a partir de uno ya existente es añadir condiciones a alguno de los tipos
predefinidos en el XML Schema. Esto se hace con el elemento <xsd:restriction>. Por ejemplo:
<xsd:simpleType name="monedaUSA">
<xsd:restriction base="xsd:decimal">
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
En este ejemplo creamos un nuevo tipo simple y le asignamos el nombre “monedaUSA”. Mediante el uso del
elemento “xsd:restriction” definimos el tipo “monedaUSA” como un subtipo del tipo base “xsd:decimal”, en el que el
número de cifras decimales es 2 (xsd:fractionDigits value=”2”). Las restricciones (también llamadas facetas) que
pueden aplicarse a los tipos simples son:
▪ minInclusive: mínimo valor que puede tomar el número; por ejemplo, si mininclusive vale 5, el número tiene
que ser mayor o igual que 5.
▪ minExclusive: el número debe ser mayor que este valor; por ejemplo, si minExclusive vale 5, el número debe
ser mayor que 5.
▪ maxInclusive: máximo valor que puede tomar el número; por ejemplo, si maxinclusive vale 5, el número
tiene que ser menor o igual que 5.
▪ maxExclusive: el número debe ser menor que este valor; por ejemplo, si maxExclusive vale 5,el número debe
ser menor que 5.
Validación XML 13
▪ totalDigits: total de cifras en el número, incluyendo las enteras y las decimales.
▪ fractionDigits: número de cifras decimales.
▪ length: número de unidades del valor literal; para la mayoría de los tipos (por ejemplo los tipos “string” y sus
derivados, la faceta “length” se refiere a caracteres, pero para listas (que veremos más adelante) se refiere al
número de elementos en la lista, y para valores binarios se refiere al número de octetos. No se puede aplicar
a los tipos “integer”, “float” o “double” (para estos se puede utilizar “totalDigits”).
▪ minLength y maxLength: valor mínimo y máximo respectivamente para la faceta “length”.
▪ pattern: formato que debe tener el valor, especificado mediante una expresión regular tradicional.
▪ enumeration: conjunto de posibles valores que puede tomar el dato (lo veremos en el siguiente apartado)
▪ whiteSpace: controla la forma que tendrá el contenido de este dato una vez haya sido procesado; puede
tomar los siguientes valores:
3.2.8.1 Ejemplos
Estas facetas se pueden combinar, y se pueden usar tanto en las definiciones de tipos con nombre como en las
definiciones de elementos. Veamos algunos ejemplos, en los que las facetas se aplican a definiciones de e
lementos. Ejemplo 1: facetas “minInclusive” y “maxInclusive”.
<xs:element name="edad">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Define el elemento “edad” de tipo simple, como un entero en el rango [0-120].
Ejemplo 2: facetas “minLength” y “maxLength”.
<xs:element name="contraseña">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Validación XML 14
3.2.8.2 Patrones para “pattern”
<xsd:simpleType>
<xs:restriction base="xsd:string">
<xs:enumeration value="bajo"/>
<xs:enumeration value="medio"/>
<xs:enumeration value="alto"/>
</xs:restriction>
</xs:simpleType>
</xsd:attribute>
Definimos el atributo “demanda” como una restricción del tipo base “xsd:string”, donde sólo existen tres
valores posibles: “alto”, “medio” y “bajo”. El atributo “demanda” debe tomar uno de estos tres valores.
Validación XML 15
3.3 Espacios de nombres
Un espacio de nombres XML es una recomendación W3C para proporcionar elementos y atributos con nombre único en una
instancia XML. Una instancia XML puede contener nombres de elementos o atributos procedentes de más de un vocabulario
XML. Si a cada uno de estos vocabularios se le da un espacio de nombres, se resuelve la ambigüedad existente entre elementos o
atributos que se llamen igual. Los nombres de elementos dentro de un espacio de nombres deben ser únicos.
Un espacio de nombres XML no necesita que su vocabulario sea definido, aunque es una buena práctica utilizar un DTD o un
esquema XML para definir la estructura de datos en la ubicación URI del espacio de nombres.
El prefijo, que es opcional, es un alias que identifica al espacio de nombres. El prefijo de un espacio de nombres es
totalmente arbitrario; lo que define e identifica un espacio de nombres es, en realidad, el URI. Hay que destacar que
el URI no se interpreta realmente como una dirección; se trata como una cadena de texto por el analizador XML. Por
ejemplo:
xmlns:xhtml="http://www.w3.org/1999/xhtml"
<isbn:numero>1568491379</isbn:numero>
</lb:libro>
En este ejemplo se declaran dos espacios de nombres para el elemento “libro”, que son:
Validación XML 16
▪ “urn:loc.gov:libros” al que se asocia el prefijo “lb”: el elemento “titulo” y el propio elemento “libro” pertenecen a este
espacio de nombres.
▪ ”urn:ISBN:0-395-36341-6” asociado al prefijo isbn: a este espacio de nombres pertenece el elemento “numero”.
<isbn:numero>1568491379</isbn:numero>
</libro>
• xmlns: identifica el espacio de nombres al que pertenecen los componentes incluidos en el esquema, asignando
opcionalmente un prefijo (este prefijo suele ser “xs” o “xsd”. Así, la sentencia
xmlns:xs=”http://www.w3.org/2001/XMLSchema”
indica que los elementos y tipos de datos utilizados en el esquema provienen del espacio de nombres
“http://www.w3.org/2001/XMLSchema”, al que se le asigna el prefijo “xs”.
Validación XML 17
3.4.1.2 Espacio de nombres propio
Además, podemos hacer que el esquema que estamos creando tenga asociado un espacio de nombres propio (target
namespace). Para ello se puede utilizar el atributo targetNamespace del elemento “schema”: que crea un espacio
de nombres al que pertenecen los elementos que se definen en el esquema. Por ejemplo:
targetNamespace:”http://www.prueba.es/esquema1”
3.4.1.3 Especificar si los elementos y atributos deben estar certificados
También se puede especificar si los elementos y los atributos declarados en él deben estar certificados por un espacio
de nombres, ya sea explícitamente mediante un prefijo o implícitamente de forma predeterminada, cuando se
utilicen en un documento instancia XML. Para ello se pueden utilizar los
atributos elementFormDefault y attributeFormDefault del elemento <xsd:schema>. Los posibles valores de estos
atributos son:
● “qualified”: indica que, en los documentos instancia XML que referencien a este esquema, los elementos (en
el caso de elementFormDefault)/atributos (en el caso de attributeFormDefault) del “target namespace”
deben estar cualificados con un prefijo.
● “unqualified”: Este es el valor por defecto. Indica que los elementos/atributos no necesitan estar prefijados
en el documento instancia.
Con esto podemos utilizar los atributos “noNameSpaceLoction” y “schemaLocation”, que nos permiten asociar un
documento instancia XML con un esquema:
Por ejemplo, supongamos que tenemos el archivo “apuntes.xsd” que contiene un XML schema. Si en dicho schema se
definió
targetNamespace:”http://www.prueba.es/esquema1”
xsi:schemaLocation:”http://www.prueba.es/esquema1 apuntes.xsd”
xsi:noNamespaceSchemaLocation=”apuntes.xsd”
Validación XML 18
Para establecer cual es el prefijo de un determinado espacio de nombres dentro del documento instancia (XML)
utilizaciones:
xmlns: prefijo= "espacio de nombres"
xmlns:apu="http://www.prueba.es/esquema1"
xmlns:p="http://www.prueba.es/persona"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<p:nombre>John</p:nombre>
<p:direccion>John</p:direccion>
</p:persona>
Validación XML 19