Un ejemplo XSD
On septiembre 29, 2021 by adminEste capítulo demostrará cómo escribir un esquema XML. También aprenderá que un esquema se puede escribir de diferentes maneras.
Un documento XML
Veamos este documento XML llamado «shiporder.xml»:
Crear un esquema XML
Ahora queremos crear un esquema para el documento XML anterior.
Empezamos abriendo un nuevo fichero que llamaremos «shiporder.xsd». Para crear el esquema podríamos simplemente seguir la estructura del documento XML y definir cada elemento según lo encontremos. Empezaremos con la declaración XML estándar seguida del elemento xs:schema que define un esquema:
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>
…
</xs:schema>
En el esquema anterior utilizamos el espacio de nombres estándar (xs), y el URI asociado a este espacio de nombres es la definición del lenguaje Schema, que tiene el valor estándar de http://www.w3.org/2001/XMLSchema.
A continuación, tenemos que definir el elemento «shiporder». Este elemento tiene un atributo y contiene otros elementos, por lo que lo consideramos como un tipo complejo. Los elementos hijos del elemento «shiporder» están rodeados por un elemento xs:sequence que define una secuencia ordenada de subelementos:
<xs:complexType>
<xs:sequence>
…
</xs:sequence>
</xs:complexType>
</xs:element>
Entonces tenemos que definir el elemento «orderperson» como un tipo simple (porque no contiene ningún atributo ni otros elementos). El tipo (xs:string) lleva el prefijo del espacio de nombres asociado a XML Schema que indica un tipo de datos de esquema predefinido:
A continuación, tenemos que definir dos elementos que son del tipo complejo: «shipto» y «item». Comenzamos definiendo el elemento «shipto»:
Con los esquemas podemos definir el número de ocurrencias posibles para un elemento con los atributos maxOccurs y minOccurs. maxOccurs especifica el número máximo de ocurrencias para un elemento y minOccurs especifica el número mínimo de ocurrencias para un elemento. El valor por defecto para maxOccurs y minOccurs es 1!
Ahora podemos definir el elemento «item». Este elemento puede aparecer varias veces dentro de un elemento «shiporder». Esto se especifica estableciendo el atributo maxOccurs del elemento «item» en «unbounded», lo que significa que puede haber tantas apariciones del elemento «item» como el autor desee. Observe que el elemento «note» es opcional. Lo hemos especificado estableciendo el atributo minOccurs a cero:
Ahora podemos declarar el atributo del elemento «shiporder». Como se trata de un atributo obligatorio, especificamos use=»required».
Nota: Las declaraciones de atributos deben ir siempre en último lugar:
Aquí está el listado completo del fichero de esquema llamado «shiporder.xsd»:
Divide el esquema
El método de diseño anterior es muy sencillo, pero puede ser difícil de leer y mantener cuando los documentos son complejos.
El siguiente método de diseño se basa en definir primero todos los elementos y atributos, y luego referirse a ellos utilizando el atributo ref.
Aquí está el nuevo diseño del fichero de esquema («shiporder.xsd»):
Usar tipos con nombre
El tercer método de diseño define clases o tipos, que nos permite reutilizar las definiciones de los elementos. Esto se hace nombrando los elementos simpleTypes y complexTypes, y luego apuntando a ellos a través del atributo type del elemento.
Aquí está el tercer diseño del fichero de esquema («shiporder.xsd»):
El elemento de restricción indica que el tipo de datos se deriva de un tipo de datos del espacio de nombres W3C XML Schema. Así, el siguiente fragmento significa que el valor del elemento o atributo debe ser un valor de cadena:
El elemento restriction se utiliza más a menudo para aplicar restricciones a los elementos. Observe las siguientes líneas del esquema anterior:
<xs:restriction base=»xs:string»>
<xs:pattern value=»{6}»/>
</xs:restriction>
</xs:simpleType>
Esto indica que el valor del elemento o atributo debe ser una cadena, debe tener exactamente seis caracteres seguidos y esos caracteres deben ser un número del 0 al 9.
Deja una respuesta