Diferencia entre revisiones de «Usuario:Lmorillas/modulo lenguajes de marcas/xml/xml schema»
De WikiEducator
(3 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
+ | <noinclude> | ||
{{MiTitulo|XML Schema}} | {{MiTitulo|XML Schema}} | ||
− | + | </noinclude> | |
+ | {{TEP}} | ||
== XML Schema == | == XML Schema == | ||
− | + | === Documentación === | |
+ | * http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/ | ||
+ | * http://www.aafunky.com/w3c/xmlschema/xmlschema-0es.html | ||
+ | * http://www.w3schools.com/schema/ | ||
+ | * http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=1 | ||
===Objetivo === | ===Objetivo === | ||
+ | XML Schema es una alternativa a DTD basada en XML. Describe la estructura de un documento XML. | ||
* Definir la estructura correcta de bloques de un documento XML | * Definir la estructura correcta de bloques de un documento XML | ||
* Define los elementos y atributos que pueden aparecer | * Define los elementos y atributos que pueden aparecer | ||
Línea 30: | Línea 37: | ||
===Un ejemplo=== | ===Un ejemplo=== | ||
− | (fuente: http://www. | + | (fuente: http://www.aafunky.com/w3c/xmlschema/xmlschema-0es.html) |
<source lang="xml"> | <source lang="xml"> | ||
<?xml version="1.0"?> | <?xml version="1.0"?> | ||
− | < | + | <hojaPedido fechaPedido="1999-10-20"> |
− | + | <enviarA pais="EEUU"> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <nombre>Alice Smith</nombre> | |
− | < | + | <calle>123 Maple Street</calle> |
− | < | + | <ciudad>Mill Valley</ciudad> |
− | < | + | <estado>CA</estado> |
− | < | + | |
− | < | + | <zip>90952</zip> |
− | <! | + | </enviarA> |
+ | <facturarA pais="EEUU"> | ||
+ | <nombre>Robert Smith</nombre> | ||
+ | |||
+ | <calle>8 Oak Avenue</calle> | ||
+ | <ciudad>Old Town</ciudad> | ||
+ | <estado>PA</estado> | ||
+ | <zip>95819</zip> | ||
+ | |||
+ | </facturarA> | ||
+ | <comentario>¡Deprisa, mi césped parece una selva!</comentario> | ||
+ | <elementos> | ||
+ | <elemento numProducto="872-AA"> | ||
+ | <nombreProducto>Cortacesped</nombreProducto> | ||
+ | |||
+ | <cantidad>1</cantidad> | ||
+ | <precioEEUU>148.95</precioEEUU> | ||
+ | <comentario>Confirmar que es eléctrico</comentario> | ||
+ | </elemento> | ||
+ | |||
+ | <elemento numProducto="926-AA"> | ||
+ | <nombreProducto>Monitor para bebes</nombreProducto> | ||
+ | <cantidad>1</cantidad> | ||
+ | <precioEEUU>39.98</precioEEUU> | ||
+ | |||
+ | <fechaEnvio>1999-05-21</fechaEnvio> | ||
+ | </elemento> | ||
+ | </elementos> | ||
+ | </hojaPedido> | ||
</source> | </source> | ||
+ | |||
XML Schema: | XML Schema: | ||
<source lang="xml"> | <source lang="xml"> | ||
− | < | + | <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | < | + | <xsd:annotation> |
− | < | + | <xsd:documentation xml:lang="es"> |
− | + | Esquema de hoja de pedido para Example.com. | |
− | + | Copyright 2000 Example.com. Todos los derechos reservados. | |
− | + | </xsd:documentation> | |
− | + | </xsd:annotation> | |
− | + | ||
− | + | ||
− | </ | + | |
− | </ | + | |
− | + | ||
− | + | ||
− | + | <xsd:element name="hojaPedido" type="TipoHojaPedido"/> | |
− | < | + | |
− | + | ||
− | < | + | <xsd:element name="comentario" type="xsd:string"/> |
− | < | + | |
− | + | <xsd:complexType name="TipoHojaPedido"> | |
− | + | <xsd:sequence> | |
− | < | + | |
− | < | + | <xsd:element name="enviarA" type="direccionEEUU"/> |
− | < | + | <xsd:element name="facturarA" type="direccionEEUU"/> |
− | < | + | <xsd:element ref="comentario" minOccurs="0"/> |
− | </ | + | |
+ | <xsd:element name="elementos" type="Elementos"/> | ||
+ | </xsd:sequence> | ||
+ | <xsd:attribute name="fechaPedido" type="xsd:date"/> | ||
+ | |||
+ | </xsd:complexType> | ||
+ | |||
+ | <xsd:complexType name="direccionEEUU"> | ||
+ | <xsd:sequence> | ||
+ | <xsd:element name="nombre" type="xsd:string"/> | ||
+ | |||
+ | <xsd:element name="calle" type="xsd:string"/> | ||
+ | <xsd:element name="ciudad" type="xsd:string"/> | ||
+ | <xsd:element name="estado" type="xsd:string"/> | ||
+ | |||
+ | <xsd:element name="zip" type="xsd:decimal"/> | ||
+ | </xsd:sequence> | ||
+ | <xsd:attribute name="pais" type="xsd:NMTOKEN" fixed="EEUU"/> | ||
+ | |||
+ | </xsd:complexType> | ||
+ | |||
+ | <xsd:complexType name="Elementos"> | ||
+ | <xsd:sequence> | ||
+ | <xsd:element name="elemento" minOccurs="0" maxOccurs="unbounded"> | ||
+ | |||
+ | <xsd:complexType> | ||
+ | <xsd:sequence> | ||
+ | <xsd:element name="nombreProducto" type="xsd:string"/> | ||
+ | <xsd:element name="cantidad"> | ||
+ | |||
+ | <xsd:simpleType> | ||
+ | <xsd:restriction base="xsd:positiveInteger"> | ||
+ | <xsd:maxExclusive value="100"/> | ||
+ | </xsd:restriction> | ||
+ | </xsd:simpleType> | ||
+ | |||
+ | </xsd:element> | ||
+ | <xsd:element name="precioEEUU" type="xsd:decimal"/> | ||
+ | <xsd:element ref="comentario" minOccurs="0"/> | ||
+ | |||
+ | <xsd:element name="fechaEnvio" type="xsd:date" minOccurs="0"/> | ||
+ | </xsd:sequence> | ||
+ | <xsd:attribute name="numProducto" type="SKU" use="required"/> | ||
+ | |||
+ | </xsd:complexType> | ||
+ | </xsd:element> | ||
+ | </xsd:sequence> | ||
+ | </xsd:complexType> | ||
+ | |||
+ | <!-- Stock Keeping Unit [Código de Almacenaje], --> | ||
+ | |||
+ | <!-- un código para identificar productos --> | ||
+ | <xsd:simpleType name="SKU"> | ||
+ | <xsd:restriction base="xsd:string"> | ||
+ | <xsd:pattern value="\d{3}-[A-Z]{2}"/> | ||
+ | </xsd:restriction> | ||
+ | |||
+ | </xsd:simpleType> | ||
+ | </xsd:schema> | ||
</source> | </source> | ||
+ | |||
===Elemento schema === | ===Elemento schema === | ||
* Declaración del espacio de nombres de la recomendación del W3C | * Declaración del espacio de nombres de la recomendación del W3C | ||
* Los hijos directos de schema son declaraciones y definiciones globales | * Los hijos directos de schema son declaraciones y definiciones globales | ||
− | * Elemento raíz. | + | * Elemento raíz (declarado a nivel global). |
* Sequence: los elementos tienen que aparecer en el mismo orden (especificador) | * Sequence: los elementos tienen que aparecer en el mismo orden (especificador) | ||
* Tipos simples (limitan el texto que se puede insertar como valor) | * Tipos simples (limitan el texto que se puede insertar como valor) | ||
* Tipos complejos (pueden ser anónimos) | * Tipos complejos (pueden ser anónimos) | ||
+ | ;element | ||
+ | : para declarar elementos. Atributos: '''name''', '''ref''', '''type''', '''sympleType''', '''complexType''' | ||
+ | ; attribute | ||
+ | : para declarar atributos. Nomalmente dentro de '''attributeGroup'''. Tipos: '''simpleType''' o '''type'''. Siempre son de tipo simple. Frecuencia: '''use''': '''required''', '''optional''', '''prohibited''',. | ||
+ | ;sequence | ||
+ | : los elementos tienen que aparecer en el mismo orden | ||
+ | ;cardinalidad | ||
+ | : minOccurs, maxOccurs. Si no se especifica nada: 1. | ||
+ | ;Restricciones de valor | ||
+ | : fixed, default, |
Última revisión de 06:44 10 ene 2013
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
Contenido
XML Schema
Documentación
- http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/
- http://www.aafunky.com/w3c/xmlschema/xmlschema-0es.html
- http://www.w3schools.com/schema/
- http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=1
Objetivo
XML Schema es una alternativa a DTD basada en XML. Describe la estructura de un documento XML.
- Definir la estructura correcta de bloques de un documento XML
- Define los elementos y atributos que pueden aparecer
- Define qué elementos son hijos, cuántos hijos y en qué orden.
- Define si un elemento puede contener texto o tiene que estar vacío.
- Define los tipos de datos de elementos y atributos.
- Define valores fijos y por defecto
A diferencia del DTD:
- es un modelo extensible y tiene más poder expresivo.
- están escritos en XML
- soporta tipos de datos y namespaces
- son una recomendación del W3C
El tipo de documento XML
La estructura de un documento XML la forman:
- Su vocabulario (elementos y atributos)
- El modelo de contenido de cada elemento
- Los tipos de datos del contenido
Componentes de un esquema
- Componentes primarios: tipos de datos, elementos y atributos
- Componentes secundarios: definiciones especiales (grupos de atributos, restricciones y anotaciones)
- Componentes de ayuda. Se usan en otros componentes
Un ejemplo
(fuente: http://www.aafunky.com/w3c/xmlschema/xmlschema-0es.html)
<?xml version="1.0"?> <hojaPedido fechaPedido="1999-10-20"> <enviarA pais="EEUU"> <nombre>Alice Smith</nombre> <calle>123 Maple Street</calle> <ciudad>Mill Valley</ciudad> <estado>CA</estado> <zip>90952</zip> </enviarA> <facturarA pais="EEUU"> <nombre>Robert Smith</nombre> <calle>8 Oak Avenue</calle> <ciudad>Old Town</ciudad> <estado>PA</estado> <zip>95819</zip> </facturarA> <comentario>¡Deprisa, mi césped parece una selva!</comentario> <elementos> <elemento numProducto="872-AA"> <nombreProducto>Cortacesped</nombreProducto> <cantidad>1</cantidad> <precioEEUU>148.95</precioEEUU> <comentario>Confirmar que es eléctrico</comentario> </elemento> <elemento numProducto="926-AA"> <nombreProducto>Monitor para bebes</nombreProducto> <cantidad>1</cantidad> <precioEEUU>39.98</precioEEUU> <fechaEnvio>1999-05-21</fechaEnvio> </elemento> </elementos> </hojaPedido>
XML Schema:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="es"> Esquema de hoja de pedido para Example.com. Copyright 2000 Example.com. Todos los derechos reservados. </xsd:documentation> </xsd:annotation> <xsd:element name="hojaPedido" type="TipoHojaPedido"/> <xsd:element name="comentario" type="xsd:string"/> <xsd:complexType name="TipoHojaPedido"> <xsd:sequence> <xsd:element name="enviarA" type="direccionEEUU"/> <xsd:element name="facturarA" type="direccionEEUU"/> <xsd:element ref="comentario" minOccurs="0"/> <xsd:element name="elementos" type="Elementos"/> </xsd:sequence> <xsd:attribute name="fechaPedido" type="xsd:date"/> </xsd:complexType> <xsd:complexType name="direccionEEUU"> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="calle" type="xsd:string"/> <xsd:element name="ciudad" type="xsd:string"/> <xsd:element name="estado" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="pais" type="xsd:NMTOKEN" fixed="EEUU"/> </xsd:complexType> <xsd:complexType name="Elementos"> <xsd:sequence> <xsd:element name="elemento" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="nombreProducto" type="xsd:string"/> <xsd:element name="cantidad"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="precioEEUU" type="xsd:decimal"/> <xsd:element ref="comentario" minOccurs="0"/> <xsd:element name="fechaEnvio" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="numProducto" type="SKU" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <!-- Stock Keeping Unit [Código de Almacenaje], --> <!-- un código para identificar productos --> <xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
Elemento schema
- Declaración del espacio de nombres de la recomendación del W3C
- Los hijos directos de schema son declaraciones y definiciones globales
- Elemento raíz (declarado a nivel global).
- Sequence: los elementos tienen que aparecer en el mismo orden (especificador)
- Tipos simples (limitan el texto que se puede insertar como valor)
- Tipos complejos (pueden ser anónimos)
- element
- para declarar elementos. Atributos: name, ref, type, sympleType, complexType
- attribute
- para declarar atributos. Nomalmente dentro de attributeGroup. Tipos: simpleType o type. Siempre son de tipo simple. Frecuencia: use: required, optional, prohibited,.
- sequence
- los elementos tienen que aparecer en el mismo orden
- cardinalidad
- minOccurs, maxOccurs. Si no se especifica nada: 1.
- Restricciones de valor
- fixed, default,