13. XML

13.1. Estructura

<?xml version="1.0" encoding="UTF-8"?>
<etiquetaraiz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="esquema.xsd">
<etiqueta propiedad="valor">contenido</etiqueta>
</etiquetaraiz>

13.2. XSD (XML Schema Definition)

  • Sirve para definir la estructura de un documento XML, permitiendo su validación
<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="etiquetaraiz">
<xs:complexType>
<xs:sequence>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:positiveInteger"/>
<xs:element name="brand" type="xs:string" />
<xs:element name="year" type="xs:gYear" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
  • Tipo complejo (complexType): contienen otros elementos
  • sequence: los elementos deben aparecer en el XML en el mismo orden que en el esquema
  • maxOccurs="unbounded": pueden aparecer ilimitados elementos, no hay máximo
  • Valor fijo: <xs:element name="" type="" fixed=""/>
  • Valor por defecto: default=""
  • Definir un atributo (escrito debajo del elemento):
    <xs:attribute name="" type=""/>
  • Definición de un espacio de nombres
    • En el XML:
      <etiq:etiquetaraiz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="direccionespacio archivoxsd"
      xmlns:etiq="direccionespacio">
      <etiq:lista>
      ...
      </etiq:lista>
      </etiq:etiquetaraiz>
    • En el XSD:
      <?xml version="1.0" encoding="UTF-8"?>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="direccionespacio" xmlns="direccionespaciodefecto" elementFormDefault="qualified">
      <xs:element name="marcadores">
      <xs:complexType>
      ...
      </xs:complexType>
      </xs:element>
      </xs:schema>
    • El uso del prefijo etiq se consigue con elementFormDefault="qualified"