Anexos: XML

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>

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"