DevSupportDocs/xsd.md

2.5 KiB

Documentación XML Schema (XSD)

Definición

XSD (XML Schema Definition) es un lenguaje, también llamado simplemente XML Schema, que sirve para definir la estructura de un documento XML, permitiendo su validación.

Declaracion de un archivo XSD y su vinculacion al XML

Sin espacio de nombres asociado

Al usar la etiqueta noNamespaceSchemaLocation, podemos usar un archivo xsd sin namespace asociado

<?xml version="1.0" encoding="utf-8"?>
<!-- archivo.xsd -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="etiqueta_raiz">
        <!-- Contenido -->
    </xs:element>
</xs:schema>
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!-- archivo.xml -->
<etiqueta_raiz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="archivo.xsd">
    <contenido/>
</etiqueta_raiz>

Con espacio de nombres personalizado

schemaLocation necesita dos valores:

  • La url del espacio de nombres.
  • La ubicacion del archivo con el esquema del espacio de nombres.
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!-- archivo.xml -->
<custom:etiqueta_raiz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="https://custom.url archivo.xsd"
            xmlns:custom="https://custom.url">
    <custom:contenido/>
</custom:etiqueta_raiz>
  • targetNamespace define el espacio de nombres para este esquema.
  • xmlns especifica que este es el espacio de nombres por defecto.
  • elementFormDefault indica que todos los elementos tienen que llevar el espacio de nombres (qualified) o no es necesario que lo lleven (unqualified)
<?xml version="1.0" encoding="utf-8"?>
<!-- archivo.xsd -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://custom.url"
xmlns="https://custom.url"
elementFormDefault="qualified">
    <xs:element name="etiqueta_raiz">
        <!-- Contenido -->
    </xs:element>
</xs:schema>

Estructura y elementos

Elementos simples

Los elementos simples solo pueden contener texto. La diferencia entre fixed y default es que en que con fixed, el valor no se puede modificar, tiene que ser ese, y con default si es modificable.

<xs:element name="nombre_del_elemento" type="tipo_de_dato"/>
<xs:element name="nombre_del_elemento" type="tipo_de_dato" fixed="cadena"/>
<xs:element name="nombre_del_elemento" type="tipo_de_dato" default="cadena"/>

Atributos

<xs:attribute name="nombre_del_atributo" type="tipo_de_dato"/>