Tutoriales de informática - Abrirllave.com

Abrirllave.com

Ejercicio de XSD - Colores de muebles

Haciendo uso del siguiente código:

  <xs:complexType name="tipoColorMueble">
    <xs:simpleContent>
      <xs:extension base="tipoMueble">
        <xs:attribute name="color">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="blanco"/>
              <xs:enumeration value="gris"/>
              <xs:enumeration value="negro"/>
              <xs:enumeration value="wengue"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="tipoMueble">
    <xs:restriction base="xs:string">
      <xs:enumeration value="armario"/>
      <xs:enumeration value="mesa"/>
      <xs:enumeration value="silla"/>
    </xs:restriction>
  </xs:simpleType>

Escribir el contenido del archivo "muebles.xsd" que permita validar el siguiente documento XML:

<?xml version="1.0" encoding="UTF-8"?>
<muebles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="muebles.xsd">
   <mueble color="blanco">mesa</mueble>
   <mueble color="gris">silla</mueble>
</muebles>

Solución:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="muebles">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="mueble" type="tipoColorMueble" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="tipoColorMueble">
    <xs:simpleContent>
      <xs:extension base="tipoMueble">
        <xs:attribute name="color">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="blanco"/>
              <xs:enumeration value="gris"/>
              <xs:enumeration value="negro"/>
              <xs:enumeration value="wengue"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="tipoMueble">
    <xs:restriction base="xs:string">
      <xs:enumeration value="armario"/>
      <xs:enumeration value="mesa"/>
      <xs:enumeration value="silla"/>
  </xs:restriction>
  </xs:simpleType>

</xs:schema>