validar tutorial opcional lista extension español enlazar elementos elemento ejemplo con xsd

xsd - tutorial - Tener tanto un atributo como una restricción en un elemento en el esquema xml



xsd lista elementos (2)

No puede combinar una restricción y una extensión en un bloque de XSD. La solución que tiene con el tipo simple "ReviewDate" es la mejor solución que conozco.

Bagazo

Estoy intentando escribir un esquema xml que validará esta pieza de xml:

<date isodate="2007-03-14">14 march 2007</date>

El atributo isodate debe tener su tipo establecido en xs: date y el contenido debe tener una longitud máxima de 50 caracteres.

Me pregunto si es posible escribir la definición del esquema xml en un bloque, algo como esto tal vez:

<xs:element name="date" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:simpleContent> <xs:restriction base="xs:string"> <xs:minLength value="0"/> <xs:maxLength value="50"/> </xs:restriction> <xs:attribute name="isodate" type="xs:date" use="required"/> </xs:simpleContent> </xs:complexType> </xs:element>

El código anterior no funciona, y realmente no puedo entender por qué. La única solución que he encontrado es dividir la parte de restricción en un tipo separado, y vincular eso como esto:

<xs:simpleType name="reviewDate"> <xs:restriction base="xs:string"> <xs:minLength value="0"/> <xs:maxLength value="50"/> </xs:restriction> </xs:simpleType> <xs:element name="date" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:simpleContent> <xs:extension base="reviewDate"> <xs:attribute name="isodate" type="xs:date" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

La pregunta que tengo es cómo escribir la definición en un bloque para que el esquema sea un poco más legible y no haga referencia a tipos en otras partes del esquema.