jueves, 6 de agosto de 2009

Esquema XSD para una Enumeracion Básica

Muchos programas trabajan con esquemas de datos en formato XML, y aunque podemos encontrar herramientas gráficas muy potentes para crear esquemas, algunas veces no tenemos tiempo de buscar la herramienta o simplemente es demasiado rollo para crear el pequeño esquema que nos hace falta.

Una enumeración (Enumeration) es un tipo de datos básico con restricciones en los valores que puede llegar a tomar.
Esta sería una plantilla para crear una enumeración:


<xsd:schema targetnamespace="http://#namespace#"
xsd="http://www.w3.org/2001/XMLSchema"
bons0="http://#namespace#">
<xsd:include schemalocation="#nombreDelEsquema#.xsd"></xsd:include>
<xsd:element name="#nombreDelParametro#" type="bons0:#nombreDelEsquema#">
<xsd:simpletype name="#nombreDelParametro#">
<xsd:restriction base="xsd:string">

<xsd:enumeration value="#valor 1#">
<xsd:enumeration value="#valor 2#">
<xsd:enumeration value="#valor 3#">

</xsd:enumeration>
</xsd:enumeration>
</xsd:enumeration>
</xsd:restriction></xsd:simpletype></xsd:element></xsd:schema>


Un esquema para un tipo complejo que se encuentra fácilmente navegando es el siguiente:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="SONG" type="songType"/>

<xsd:simpleType name="oligopolyMember">

<xsd:restriction base="xsd:string">
<xsd:enumeration value="Warner-Elektra-Atlantic"/>
<xsd:enumeration value="Universal Music Group"/>
<xsd:enumeration value="Sony Music Entertainment, Inc."/>
<xsd:enumeration value="Capitol Records, Inc."/>
<xsd:enumeration value="BMG Music"/>

</xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="songType">
<xsd:sequence>
<xsd:element name="TITLE" type="xsd:string"/>
<xsd:element name="COMPOSER" type="xsd:string"
maxOccurs="unbounded"/>

<xsd:element name="PRODUCER" type="xsd:string"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="PUBLISHER" type="oligopolyMember"
minOccurs="0"/>
<xsd:element name="LENGTH" type="xsd:timeDuration"/>
<xsd:element name="YEAR" type="xsd:gYear"/>
<xsd:element name="ARTIST" type="xsd:string"
maxOccurs="unbounded"/>
</xsd:sequence>

</xsd:complexType>

</xsd:schema>