Tutoriales de informática - Abrirllave.com

Abrirllave.com

Ejercicio de XSD - Números y letras

Dado el siguiente documento XML:

<?xml version="1.0" encoding="UTF-8"?>
<fichas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="fichas.xsd">
   <ficha numero="01" letra="Z">
      <codigo>11</codigo>
      <nombre>Ana Sanz Tin</nombre>
   </ficha>
   <ficha numero="02">
      <codigo>12</codigo>
      <nombre>Iker Rubio Mol</nombre>
   </ficha>
</fichas>

Escribir el contenido del archivo "fichas.xsd" que permita validarlo, teniendo en cuenta que:

Solución:

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

  <xs:element name="fichas">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ficha" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="codigo" type="dosDigitos"/>
              <xs:element name="nombre" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="numero" type="dosDigitos" use="required"/>
            <xs:attribute name="letra">
              <xs:simpleType>
                 <xs:restriction base="xs:string">
                    <xs:pattern value="[XYZ]"/>
                 </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:simpleType name="dosDigitos">
    <xs:restriction base="xs:integer">
      <xs:pattern value="[01][0-9]"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>