Saltar al contenido principal

Recetas XSD

Elemento con texto y sin atributos

<precio>59.65</precio>
<xs:element name="precio" type="xs:decimal" />

Elemento con texto y con atributos

<precio divisa="EUR">59.65</precio>
<xs:element name="precio">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="divisa" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

Elemento con texto, con atributos y restricciones en el contenido

<precio divisa="EUR">59.65</precio>
<xs:element name="precio">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="tipo-precio">
<xs:attribute name="divisa" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

<xs:simpleType name="tipo-precio">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0" />
</xs:restriction>
</xs:simpleType>

Elemento sin texto y sin atributos

<precio />
<!-- opción 1 -->
<xs:element name="precio">
<xs:complexType/>
</xs:element>
<!-- opción 2 -->
<xs:element name="precio" type="xs:string" fixed=""/>
<!-- opción 3 -->
<xs:element name="precio">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

Elemento sin texto y con atributos

<precio divisa="EUR" />
<xs:element name="precio">
<xs:complexType>
<xs:attribute name="divisa" type="xs:string"/>
</xs:complexType>
</xs:element>

Elemento con elementos y sin atributos

<precio>
<cantidad>59.65</cantidad>
<divisa>EUR</divisa>
</precio>
<xs:element name="precio">
<xs:complexType>
<xs:sequence>
<xs:element name="cantidad" type="xs:decimal" />
<xs:element name="divisa" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>

Elemento con elementos y con atributos

<precio available="yes"> 
<cantidad>59.65</cantidad>
<divisa>EUR</divisa>
</precio>
<xs:element name="precio">
<xs:complexType>
<xs:sequence>
<xs:element name="cantidad" type="xs:decimal" />
<xs:element name="divisa" type="xs:string" />
</xs:sequence>
<xs:attribute name="available" type="xs:string" />
</xs:complexType>
</xs:element>

Grupos de elementos

<persona id="1">
<nombre>Eva</nombre>
<fecha-nacimiento>1980-01-01</fecha-nacimiento>
</persona>

<contacto id="2">
<name>Eva</name>
<fecha-nacimiento>1980-01-01</fecha-nacimiento>
<telefono>666777888</telefono>
</contacto>
<xs:element name="persona" type="tipoPersona" />
<xs:element name="contacto" type="tipoContacto" />

<xs:group name="grupoPersona">
<xs:sequence>
<xs:element name="nombre" type="xs:string" />
<xs:element name="fecha-nacimiento" type="xs:date" />
</xs:sequence>
</xs:group>

<xs:complexType name="tipoPersona">
<xs:sequence>
<xs:group ref="grupoPersona" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
</xs:complexType>

<xs:complexType name="tipoContacto">
<xs:sequence>
<xs:group ref="grupoPersona" />
<xs:element name="telefono" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
</xs:complexType>

Extender elemento complejo

<ficha numero="1">
<nombre>Eva</nombre>
<edad>25</edad>
</ficha>

<ficha-ampliada numero="2">
<nombre>Eva</nombre>
<edad>25</edad>
<ciudad>París</ciudad>
<pais>Francia</pais>
</ficha-ampliada>
<xs:element name="ficha" type="infoPersona">
<xs:element name="ficha" type="infoPersonaAmpliada">

<xs:complexType name="infoPersona">
<xs:sequence>
<xs:element name="nombre" type="xs:string" />
<xs:element name="edad" type="xs:integer" />
</xs:sequence>
<xs:attribute name="numero" type="xs:integer" />
</xs:complexType>

<xs:complexType name="infoPersonaAmpliada">
<xs:complexContent>
<xs:extension base="infoPersona">
<xs:sequence>
<xs:element name="ciudad" type="xs:string" />
<xs:element name="pais" type="xs:string" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>