XML restrictions on a set of values

Hoy he necesitado validar que los valores de los atributos de un fichero XML pertenecen a un conjunto de valores concreto.

Encontré las siguientes soluciones, basadas en XSD:

Solución 1:

<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

Solución 2:

<xs:element name="car" type="carType"/>
<xs:simpleType name="carType">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>


La principal diferencia entre la solución 1 y la solución 2 reside en que la segunda solución define el tipo carType de modo que pueda ser utilizado por otros elementos. Esto se consigue definiendo carType fuera del elemento car.