Ejemplos de los esquemas XML

Este tema contiene los ejemplos de pedidos de compra del World Wide Web Consortium (W3C).El primer ejemplo es el esquema del pedido de compra.El segundo es el documento de instancia que este esquema de ejemplo valida.

Ejemplo: esquema de pedido de compra

En el ejemplo siguiente se muestra un esquema, po.xsd, que define un pedido de compra.Se muestra la utilización de las declaraciones element y attribute.También se muestran definiciones simpleType y complexType.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://tempuri.org/po.xsd" 
xmlns="http://tempuri.org/po.xsd" elementFormDefault="qualified">
 <xs:annotation>
  <xs:documentation xml:lang="en">
   Purchase order schema for Example.com.
   Copyright 2000 Example.com. All rights reserved.
  </xs:documentation>
 </xs:annotation>

 <xs:element name="purchaseOrder" type="PurchaseOrderType"/>

 <xs:element name="comment" type="xs:string"/>

 <xs:complexType name="PurchaseOrderType">
  <xs:sequence>
   <xs:element name="shipTo" type="USAddress"/>
   <xs:element name="billTo" type="USAddress"/>
   <xs:element ref="comment" minOccurs="0"/>
   <xs:element name="items"  type="Items"/>
  </xs:sequence>
  <xs:attribute name="orderDate" type="xs:date"/>
 </xs:complexType>

 <xs:complexType name="USAddress">
      <xs:annotation>
      <xs:documentation>
       Purchase order schema for Example.Microsoft.com.
       Copyright 2001 Example.Microsoft.com. All rights reserved.
      </xs:documentation>
      <xs:appinfo>
        Application info.
      </xs:appinfo>
     </xs:annotation>

  <xs:sequence>
   <xs:element name="name"   type="xs:string"/>
   <xs:element name="street" type="xs:string"/>
   <xs:element name="city"   type="xs:string"/>
   <xs:element name="state"  type="xs:string"/>
   <xs:element name="zip"    type="xs:decimal"/>
  </xs:sequence>
  <xs:attribute name="country" type="xs:NMTOKEN"
     fixed="US"/>
 </xs:complexType>

 <xs:complexType name="Items">
  <xs:sequence>
   <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="productName" type="xs:string"/>
      <xs:element name="quantity">
       <xs:simpleType>
        <xs:restriction base="xs:positiveInteger">
         <xs:maxExclusive value="100"/>
        </xs:restriction>
       </xs:simpleType>
      </xs:element>
      <xs:element name="USPrice"    type="xs:decimal"/>
      <xs:element ref="comment"   minOccurs="0"/>
      <xs:element name="shipDate" type="xs:date" minOccurs="0"/>
     </xs:sequence>
     <xs:attribute name="partNum" type="SKU" use="required"/>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

 <!-- Stock Keeping Unit, a code for identifying products -->
 <xs:simpleType name="SKU">
  <xs:restriction base="xs:string">
   <xs:pattern value="\d{3}-[A-Z]{2}"/>
  </xs:restriction>
 </xs:simpleType>

</xs:schema>

Ejemplo: documento de instancia de pedido de compra

En el ejemplo siguiente se muestra un documento de instancia, po.xml, del esquema de pedido de compra que po.xsd valida en el ejemplo anterior.

<?xml version="1.0"?>
<purchaseOrder xmlns="http://tempuri.org/po.xsd" orderDate="1999-10-20">
    <shipTo country="US">
        <name>Alice Smith</name>
        <street>123 Maple Street</street>
        <city>Mill Valley</city>
        <state>CA</state>
        <zip>90952</zip>
    </shipTo>
    <billTo country="US">
        <name>Robert Smith</name>
        <street>8 Oak Avenue</street>
        <city>Old Town</city>
        <state>PA</state>
        <zip>95819</zip>
    </billTo>
    <comment>Hurry, my lawn is going wild!</comment>
    <items>
        <item partNum="872-AA">
            <productName>Lawnmower</productName>
            <quantity>1</quantity>
            <USPrice>148.95</USPrice>
            <comment>Confirm this is electric</comment>
        </item>
        <item partNum="926-AA">
            <productName>Baby Monitor</productName>
            <quantity>1</quantity>
            <USPrice>39.98</USPrice>
            <shipDate>1999-05-21</shipDate>
        </item>
    </items>
</purchaseOrder>

Vea también

Referencia

Referencia de esquemas XML (XSD)

Elementos de los esquemas XML

Referencia de tipos de datos XML

Tipos de datos XML primitivos

Tipos de datos XML derivados

Conceptos

Aspectos de tipo de datos