Los DTD permiten diseñar un vocabulario para ficheros XML,
pero, ¿qué sucede cuando los valores de los elementos y atributos de esos
ficheros han de corresponder a datos de un tipo determinado, o cumplir
determinadas restricciones que no pueden reflejarse en los DTD? Para ello se
definen XML Schemas, que se componen de elementos y atributos, al
igual que los DTD.
¿También se definen en ficheros planos? Si, ya que son documentos XML,
pero en este caso la extensión de los archivos es xsd, motivo por el cual
también se les denomina documentos XSD.
Los elementos XML que se utilizan para generar un esquema han de pertenecer
al espacio de nombres XML Schema, que es: http://www.w3.org/2001/XMLSchema. En esta
especificación se usa el prefijo
, pero para abreviar se usa
, aunque en la práctica cualquier prefijo puede ser usado, siempre
que se use el mismo prefijo en todo el documento.
Las estructuras que se definen en XML Schema definen a su vez numerosos
atributos para uso directo en cualquier documento XML y están en un espacio
de nombres diferente, http://www.w3.org/2001/XMLSchema-instance. En
esta especificación se usa el prefijo
, pero para abreviar se usa
, aunque en la práctica cualquier prefijo puede ser usado, siempre
que se use el mismo prefijo en todo el documento.
De esta manera, los prefijos
,
y
se pueden utilizar indistintamente al definir el esquema siempre
que en el mismo se utilice únicamente uno de ellos.
El ejemplar de estos ficheros es
, contiene declaraciones para todos los elementos y atributos que puedan
aparecer en un documento XML asociado válido. Los elementos hijos inmediatos
de este ejemplar son
que nos permiten crear globalmente un elemento. Esto significa que el
elemento creado puede ser el ejemplar del documento XML asociado.
El elemento
puede tener algunos atributos. La declaración de un esquema suele tener
el siguiente aspecto:
<?xml version="1.0" encoding="UTF-8"><br />
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">
...<br />
...<br />
</xs:schema>
El siguiente fragmento:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
indica que los elementos y tipos de datos usados en el esquema vienen del
espacio de nombres "http://www.w3.org/2001/XMLSchema". También especifica
que los elementos y los tipos de datos que provengan de dicho espacio de
nombres deben tener el prefijo xs:. Este fragmento es el único
obligatorio para que la definición sea correcta.
El siguiente fragmento:
targetNamespace="https://www.w3schools.com"
indica que los elementos definidos en el esquema pertenecen al espacio de
nombres de "https://www.w3schools.com". Por defecto toma este valor.
El siguiente fragmento:
xmlns="https://www.w3schools.com"
indica que el espacio de nombres por defecto es
"https://www.w3schools.com".
El siguiente fragmento:
elementFormDefault="qualified"
indica que cualquier elemento usado en una instancia xml que ha sido
declarada con este esquema debe ser identificado con el espacio de nombres.
Por defecto toma este valor.