Diferencia entre revisiones de «Usuario:Lmorillas/modulo lenguajes de marcas/xml/xml schema»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con '{{MiTitulo|XML Schema}} == XML Schema == XML Schema es una alternativa a DTD basada en XML. Describe la estructura de un documento XML. ===Objetivo === * Definir la estructura…')
 
 
(4 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 ==
XML Schema es una alternativa a DTD basada en XML. Describe la estructura de un documento XML.
+
=== 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 23: Línea 30:
 
* El modelo de contenido de cada elemento
 
* El modelo de contenido de cada elemento
 
* Los tipos de datos del contenido
 
* Los tipos de datos del contenido
 +
 
===Componentes de un esquema===
 
===Componentes de un esquema===
 
* Componentes primarios: tipos de datos, elementos y atributos
 
* Componentes primarios: tipos de datos, elementos y atributos
 
* Componentes secundarios: definiciones especiales (grupos de atributos, restricciones y anotaciones)
 
* Componentes secundarios: definiciones especiales (grupos de atributos, restricciones y anotaciones)
 
* Componentes de ayuda. Se usan en otros componentes
 
* Componentes de ayuda. Se usan en otros componentes
 +
 +
===Un ejemplo===
 +
(fuente: http://www.aafunky.com/w3c/xmlschema/xmlschema-0es.html)
 +
<source lang="xml">
 +
<?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>
 +
 +
 +
XML Schema:
 +
<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>
  
 
===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 07:44 10 ene 2013


Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg


XML Schema

Documentación

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,