TIPOS DE DATOS NATIVOS

Casi siempre hasta ahora hemos usado "string", aunque hay muchos más:

Además de los atributos mostrados, los esquemas XML permiten otros tipos definidos en la recomendación de XML, que incluyen ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN y NMTOKENS. No entraremos en detalles sobre ellos, pero si quieres, pueden consultar en la recomendación, en http://www.w3.org/TR/xmlschema-2/.

Aunque hasta ahora hemos usado solo el tipo de datos "string", puede que prefiramos utilizar otro tipo de datos para restringir los valores posibles. Por ejemplo, supongamos que queremos que la latitud y longitud en la agenda, aparezca siempre como un dato numérico con decimales. Entonces las definiciones apropiadas, serían:

<element name="latitud" type="float"/> <element name="longitud" type="float"/>

NOTA FINAL: CREANDO ELEMENTOS CON CONTENIDO SIMPLE Y ATRIBUTOS

Hasta ahora hemos visto como crear elementos complejos, que pueden contener tanto elementos como atributos usando la declaración <complexType>. También hemos visto como crear tipos simples, con la declaración <simpleType>. Pero aun nos queda ver como crear elementos que tienen un tipo simple, pero también atributos. Para esto utilizamos la declaración <simpleContent>. Observemos el siguiente ejemplo:

<element name="teléfono"> <complexType> <simpleContent> <extension base="integer"> <attribute name="clase" type="string" default="Casa"/> </extension>t </simpleContent> </complexType> </element>

Dentro de <simpleContent> está la declaración <extension>. <extension> utiliza el atributo "base" para indicar el tipo de datos del contenido del elemento. Tras especificar el tipo base, se declaran dentro de <extension> los atributos, mediante <attribute> y <attributeGroup>. Así, cualquiera de los siguientes ejemplos de teléfono son válidos:

<teléfono clase="Casa">999999999</teléfono> <teléfono>969345345</teléfono> <teléfono/>

NOTA: Aclaro esto. Si utilizamos "type" en la declaración del elemento, no podemos poner dentro un complexType. Pero si no ponemos complexType, entonces no podemos declarar el atributo. Y si declaramos el complexType, ¿Cómo decir que se trata de un tipo simple? Pues el modo es este...