Tutoriales de informática - Abrirllave.com

Abrirllave.com

Ejercicio de XSD - Precios de artículos

Dado el archivo "precios.xsd":

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="precios">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="precio" maxOccurs="unbounded">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:decimal">
                <xs:attribute name="moneda" type="xs:string" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Realizar los cambios necesarios en el archivo "precios.xsd" para que permita validar el siguiente documento XML:

<?xml version="1.0" encoding="UTF-8"?>
<articulos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="articulos.xsd">
   <articulo>
      <nombre>Mesa</nombre>
      <precio moneda="Euro">50</precio>
   </articulo>
   <articulo>
      <nombre>Silla</nombre>
      <precio moneda="Dólar">78.99</precio>
   </articulo>
</articulos>

Solución:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="articulos">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="articulo" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="nombre" type="xs:string"/>
              <xs:element name="precio">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:decimal">
                      <xs:attribute name="moneda" type="xs:string"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>