80 lines
2.5 KiB
Markdown
80 lines
2.5 KiB
Markdown
## 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
|
|
<?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
|
|
<?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
|
|
<?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
|
|
<?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.
|
|
|
|
```xml
|
|
<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
|
|
|
|
```xml
|
|
<xs:attribute name="nombre_del_atributo" type="tipo_de_dato"/>
|
|
``` |