SlideShare a Scribd company logo
XML Schema Carlos Castillo [email_address] Departamento de Ciencias de la Computacion Facultad de Ciencias Fisicas y Matematicas Universidad de Chile
“Data-oriented” XML <?xml version=”1.0”?> <invoice> <orderDate>1999-01-21</orderDate> <shipDate>1999-01-25</shipDate> <billingAddress> <name>Ashok Malhotra</name> <street>123 Microsoft Ave.</street> <city>Hawthorne</city> <state>NY</state> <zip>10532-0000</zip> </billingAddress> <voice>555-1234</voice> <fax>555-4321</fax> </invoice> factura.xml
“Document-oriented” XML <?xml version=”1.0”?> <memo importance='high' date='1999-03-23'> <from>Paul V. Biron</from> <to>Ashok Malhotra</to> <subject>Latest draft</subject> <body> We need to discuss the latest draft <emph>immediately</emph>. Either email me at <email>  mailto:paul.v.biron@kp.org</email> or call <phone>555-9876</phone> </body> </memo> memo.xml
Propósito lenguaje schema Describir estructura Anidación Multiplicidad Ordenamiento Describir tipos Para velocidad operatoria Para mejor almacenamiento Para busquedas Para ingreso de datos Para detectar errores (ej.: numeros, etc.)
Requerimientos Schema Fácil de usar Expresivo Orientado a estructura (DTD) v/s restricciones (Schematron) Poder como mínimo emular razgos de las bases de datos relacionales Llaves primarias Llaves secundarias Tipos nativos de las BD relacionales
Jerarquía de lenguajes
Características XML Schema Sintaxis en XML Espacios de nombres, includes 45 tipos nativos Tipos de usuario, Tipos complejos Secuencias, Multiplicidad Llaves primarias, unicidad Llaves secundarias
Ejemplo simple XML Schema <?xml version=&quot;1.0&quot;?> <xsd: schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns=&quot;http://www.example.com&quot; targetNamespace=&quot;http://www.example.com&quot; elementFormDefault=&quot;qualified&quot;> <xsd: element   name =&quot;note&quot;> <xsd: complexType > <xsd: sequence > <xsd:element name=&quot;to&quot;  type =&quot;xsd:string&quot;/> <xsd:element name=&quot;from&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;heading&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;body&quot; type=&quot;xsd:string&quot;/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>  note.xsd
Ejemplo simple XML Schema + doc. <xsd:element name=&quot;note&quot;> <xsd:complexType> <xsd:sequence> <xsd:element name=&quot;to&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;from&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;heading&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;body&quot; type=&quot;xsd:string&quot;/> </xsd:sequence> </xsd:complexType> </xsd:element note.xsd <?xml version=”1.0”?> <note> < to >Juan</ to > < from >Miguel</ from > < heading >Llama a X</ heading > < body >X te busca urgente</ body > </note> note.xml
XML Schema v/s DTD, 1/2 <xsd:element name=&quot;note&quot;> <xsd:complexType> <xsd:sequence> <xsd:element name=&quot;to&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;from&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;heading&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;body&quot; type=&quot;xsd:string&quot;/> </xsd:sequence> </xsd:complexType> </xsd:element note.xsd <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> note.dtd
XML Schema v/s DTD, 2/2 <xsd:element name=&quot;note&quot;> <xsd:complexType> <xsd:sequence> <xsd:element name=&quot;to&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;priority&quot; type=&quot; xsd:integer &quot;/> <xsd:element name=&quot;heading&quot;> <xsd:simpleType> <xsd:restriction base=&quot;xsd:string&quot;> <xsd:maxLength value=&quot;10&quot;/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name=&quot;body&quot; type=&quot;xsd:string&quot;/> </xsd:sequence> </xsd:complexType> </xsd:element> note2.xsd <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT priority ( #PCDATA )> <!ELEMENT heading ( #PCDATA )> <!ELEMENT body (#PCDATA)> note2.dtd
Orden de compra <?xml version=&quot;1.0&quot;?> <purchaseOrder orderDate=&quot;1999-10-20&quot;> <shipTo country=&quot;US&quot;> <name>Alice Smith</name> <street>12 Maple Street</street> <city>Mill Valley</city> <state>CA</state> <zip>90952</zip> </shipTo> <billTo country=&quot;US&quot;> <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=&quot;872-AA&quot;> < productName >Lawnmower</productName> <quantity>1</quantity> <USPrice>148.95</USPrice> <comment>Confirm this is electric</comment> </item> <item partNum=&quot;926-AA&quot;> <productName>Baby Monitor</productName> <quantity>1</quantity> <USPrice>39.98</USPrice> <shipDate>1999-05-21</shipDate> </item> </items> </purchaseOrder> orden_compra.xml
Orden de compra (tipos dato) <?xml version=&quot;1.0&quot;?> <purchaseOrder orderDate=&quot; 1999-10-20 &quot;> <shipTo country=&quot; US &quot;> <name>Alice Smith</name> <street>12 Maple Street</street> <city>Mill Valley</city> <state> CA </state> <zip> 90952 </zip> </shipTo> <billTo country=&quot;US&quot;> <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=&quot; 872-AA &quot;> < productName >Lawn mower</productName> <quantity> 2 </quantity> <USPrice> 148.95 </USPrice> <comment>Confirm this is electric</comment> </item> <item partNum=&quot;926-AA&quot;> <productName>Baby Monitor</productName> <quantity>1</quantity> <USPrice>39.98</USPrice> <shipDate>1999-05-21</shipDate> </item> </items> </purchaseOrder> orden_compra.xml
XML Schema 1/3 <schema xmlns=&quot; http://www.w3.org/2001/XMLSchema &quot;> <annotation> <documentation xml:lang=&quot;en&quot;> Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. </documentation> </annotation> <element name=&quot;purchaseOrder&quot; type=&quot;PurchaseOrderType&quot;/> <!-- Tipo complejo --> <complexType name=&quot;PurchaseOrderType&quot;> <sequence> <element name=&quot;shipTo&quot; type=&quot;USAddress&quot;/> <element name=&quot;billTo&quot; type=&quot;USAddress&quot;/> <element ref=&quot;comment&quot; minOccurs=&quot;0&quot;/> <element name=&quot;items&quot;  type=&quot;Items&quot;/> </sequence> <attribute name=&quot;orderDate&quot; type=&quot;date&quot;/> </complexType>
XML Schema 2/3 <!-- Tipo complejo --> <complexType name=&quot;USAddress&quot;> <sequence> <element name=&quot;name&quot;  type=&quot;string&quot;/> <element name=&quot;street&quot; type=&quot;string&quot;/> <element name=&quot;city&quot;  type=&quot;string&quot;/> <element name=&quot;state&quot;  type=&quot;string&quot;/> <element name=&quot;zip&quot;  type=&quot;decimal&quot;/> </sequence> <attribute name=&quot;country&quot; type=&quot;NMTOKEN&quot; fixed=&quot;US&quot;/> </complexType> <!-- Tipo simple --> <simpleType name=&quot;SKU&quot;> <restriction base=&quot;string&quot;> <pattern value=&quot;\d{3}-[A-Z]{2}&quot;/> </restriction> </simpleType> <!-- Elemento --> <element name=&quot;comment&quot; type=&quot;string&quot;/>
XML Schema Ej (3) <complexType name=&quot;Items&quot;> <sequence> <element name=&quot;item&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;> <complexType> <sequence> <element name=&quot;productName&quot; type=&quot;string&quot;/> <element name=&quot;quantity&quot;> <simpleType> <restriction base=&quot;positiveInteger&quot;> <maxExclusive value=&quot;100&quot;/> </restriction> </simpleType> </element> <element name=&quot;USPrice&quot;  type=&quot;decimal&quot;/> <element ref=&quot;comment&quot;  minOccurs=&quot;0&quot;/> <element name=&quot;shipDate&quot; type=&quot;date&quot; minOccurs=&quot;0&quot;/> </sequence> <attribute name=&quot;partNum&quot; type=&quot;SKU&quot; use=&quot;required&quot;/> </complexType> </element> </sequence> </complexType> </schema>
Tipos de tipos de dato Singulares Primitivos Derivados Listas Dependientes de un solo tipo Uniones Listas heterogeneas (varios tipos)
Derivacion de tipos Por restriccion Tipico: string restringido a una regexp Por listado Por union 'Tipos complejos'
Elemento, Compuesto, Attr Tipo complejo = compuesto tipos simples ComplexType contiene elementos y atributos <complexType name=&quot;USAddress&quot;> <sequence> <element name=&quot;name&quot;  type=&quot;string&quot;/> <element name=&quot;street&quot; type=&quot;string&quot;/> <element name=&quot;city&quot;  type=&quot;string&quot;/> <element name=&quot;state&quot;  type=&quot;string&quot;/> <element name=&quot;zip&quot;  type=&quot;decimal&quot;/> </sequence> <attribute name=&quot;country&quot; type=&quot;NMTOKEN&quot; fixed=&quot;US&quot;/> </complexType>
Restricciones multiplicidad Comment es opcional minOccurs default 1 maxOccurs default 1 (“unbounded) Atributos use = (required, optional, prohibited) Valores fijos y default fixed = “...” default = “...” <element ref=&quot;comment&quot; minOccurs=&quot;0&quot;/>
Tipos simples string byte, unsignedByte (-1,126;0,255) base64Binary (GpM7) hexBinary (FF00EE) integer, positiveInteger, negativeInteger int, long, short, float, double, boolean time, duration Qname, anyURI
Nuevos tipos simples <simpleType name=”myInteger”> <restriction base=”integer”> <minInclusive value=”10000”/> <maxInclusive value=”99999”/> </restriction> </simpleType> Se definen como restricciones en base a otros tipos de dato simples Pueden ser anónimos (ej.: quantity)
Nuevos tipos enumerados <simpleType name=”deptosIngenieria”> <restriction base=”string”> <enumeration value=”cc”/> <enumeration value=”ci”/> <enumeration value=”eh”/> <enumeration value=”ma”/> ... <enumeration value=”in”/> </restriction> </simpleType> Se definen por extensión
Tipo lista <simpleType name=”listDeptos”> <list itemType=”deptosIngenieria”/> </simpleType> <!-- Ejemplo --> <listado>in ma cc</listado> Soporte nativo para listas en elementos
Contenido mixed Mixed en este mundo significa texto plano y elementos <element name=”body”> <complexType mixed=”true”> <element name=”b”/> </complexType> </element>
 
Otras características Soporte para anotaciones Extensiones a sequence Choice Grupos de atributos compartidos Espacios de nombres Tipos globales, locales, scope de archivo Tipos abstractos no pueden tener instancias, sólo subtipos

More Related Content

ODP
Learning To Love Forms (Web Directions South '07)
PPT
Presentation1
PDF
XML em Aplicações e-Business
PPT
Web Services
PPT
Xml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
PDF
Semantic HTML Basic
PPT
Writing beautiful HTML
PPT
CSS Technieken Toegelicht
Learning To Love Forms (Web Directions South '07)
Presentation1
XML em Aplicações e-Business
Web Services
Xml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
Semantic HTML Basic
Writing beautiful HTML
CSS Technieken Toegelicht

More from Carlos Castillo (ChaTo) (20)

PDF
Finding High Quality Content in Social Media
PDF
When no clicks are good news
PDF
Socia Media and Digital Volunteering in Disaster Management @ DSEM 2017
PDF
Detecting Algorithmic Bias (keynote at DIR 2016)
PDF
Discrimination Discovery
PDF
Fairness-Aware Data Mining
PDF
Big Crisis Data for ISPC
PDF
Databeers: Big Crisis Data
PDF
Observational studies in social media
PDF
Natural experiments
PDF
Content-based link prediction
PDF
Link prediction
PDF
Recommender Systems
PDF
Graph Partitioning and Spectral Methods
PDF
Finding Dense Subgraphs
PDF
Graph Evolution Models
PDF
Link-Based Ranking
PDF
Text Indexing / Inverted Indices
PDF
Text Summarization
Finding High Quality Content in Social Media
When no clicks are good news
Socia Media and Digital Volunteering in Disaster Management @ DSEM 2017
Detecting Algorithmic Bias (keynote at DIR 2016)
Discrimination Discovery
Fairness-Aware Data Mining
Big Crisis Data for ISPC
Databeers: Big Crisis Data
Observational studies in social media
Natural experiments
Content-based link prediction
Link prediction
Recommender Systems
Graph Partitioning and Spectral Methods
Finding Dense Subgraphs
Graph Evolution Models
Link-Based Ranking
Text Indexing / Inverted Indices
Text Summarization
Ad

XML Schema

  • 1. XML Schema Carlos Castillo [email_address] Departamento de Ciencias de la Computacion Facultad de Ciencias Fisicas y Matematicas Universidad de Chile
  • 2. “Data-oriented” XML <?xml version=”1.0”?> <invoice> <orderDate>1999-01-21</orderDate> <shipDate>1999-01-25</shipDate> <billingAddress> <name>Ashok Malhotra</name> <street>123 Microsoft Ave.</street> <city>Hawthorne</city> <state>NY</state> <zip>10532-0000</zip> </billingAddress> <voice>555-1234</voice> <fax>555-4321</fax> </invoice> factura.xml
  • 3. “Document-oriented” XML <?xml version=”1.0”?> <memo importance='high' date='1999-03-23'> <from>Paul V. Biron</from> <to>Ashok Malhotra</to> <subject>Latest draft</subject> <body> We need to discuss the latest draft <emph>immediately</emph>. Either email me at <email> mailto:paul.v.biron@kp.org</email> or call <phone>555-9876</phone> </body> </memo> memo.xml
  • 4. Propósito lenguaje schema Describir estructura Anidación Multiplicidad Ordenamiento Describir tipos Para velocidad operatoria Para mejor almacenamiento Para busquedas Para ingreso de datos Para detectar errores (ej.: numeros, etc.)
  • 5. Requerimientos Schema Fácil de usar Expresivo Orientado a estructura (DTD) v/s restricciones (Schematron) Poder como mínimo emular razgos de las bases de datos relacionales Llaves primarias Llaves secundarias Tipos nativos de las BD relacionales
  • 7. Características XML Schema Sintaxis en XML Espacios de nombres, includes 45 tipos nativos Tipos de usuario, Tipos complejos Secuencias, Multiplicidad Llaves primarias, unicidad Llaves secundarias
  • 8. Ejemplo simple XML Schema <?xml version=&quot;1.0&quot;?> <xsd: schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns=&quot;http://www.example.com&quot; targetNamespace=&quot;http://www.example.com&quot; elementFormDefault=&quot;qualified&quot;> <xsd: element name =&quot;note&quot;> <xsd: complexType > <xsd: sequence > <xsd:element name=&quot;to&quot; type =&quot;xsd:string&quot;/> <xsd:element name=&quot;from&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;heading&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;body&quot; type=&quot;xsd:string&quot;/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> note.xsd
  • 9. Ejemplo simple XML Schema + doc. <xsd:element name=&quot;note&quot;> <xsd:complexType> <xsd:sequence> <xsd:element name=&quot;to&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;from&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;heading&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;body&quot; type=&quot;xsd:string&quot;/> </xsd:sequence> </xsd:complexType> </xsd:element note.xsd <?xml version=”1.0”?> <note> < to >Juan</ to > < from >Miguel</ from > < heading >Llama a X</ heading > < body >X te busca urgente</ body > </note> note.xml
  • 10. XML Schema v/s DTD, 1/2 <xsd:element name=&quot;note&quot;> <xsd:complexType> <xsd:sequence> <xsd:element name=&quot;to&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;from&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;heading&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;body&quot; type=&quot;xsd:string&quot;/> </xsd:sequence> </xsd:complexType> </xsd:element note.xsd <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> note.dtd
  • 11. XML Schema v/s DTD, 2/2 <xsd:element name=&quot;note&quot;> <xsd:complexType> <xsd:sequence> <xsd:element name=&quot;to&quot; type=&quot;xsd:string&quot;/> <xsd:element name=&quot;priority&quot; type=&quot; xsd:integer &quot;/> <xsd:element name=&quot;heading&quot;> <xsd:simpleType> <xsd:restriction base=&quot;xsd:string&quot;> <xsd:maxLength value=&quot;10&quot;/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name=&quot;body&quot; type=&quot;xsd:string&quot;/> </xsd:sequence> </xsd:complexType> </xsd:element> note2.xsd <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT priority ( #PCDATA )> <!ELEMENT heading ( #PCDATA )> <!ELEMENT body (#PCDATA)> note2.dtd
  • 12. Orden de compra <?xml version=&quot;1.0&quot;?> <purchaseOrder orderDate=&quot;1999-10-20&quot;> <shipTo country=&quot;US&quot;> <name>Alice Smith</name> <street>12 Maple Street</street> <city>Mill Valley</city> <state>CA</state> <zip>90952</zip> </shipTo> <billTo country=&quot;US&quot;> <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=&quot;872-AA&quot;> < productName >Lawnmower</productName> <quantity>1</quantity> <USPrice>148.95</USPrice> <comment>Confirm this is electric</comment> </item> <item partNum=&quot;926-AA&quot;> <productName>Baby Monitor</productName> <quantity>1</quantity> <USPrice>39.98</USPrice> <shipDate>1999-05-21</shipDate> </item> </items> </purchaseOrder> orden_compra.xml
  • 13. Orden de compra (tipos dato) <?xml version=&quot;1.0&quot;?> <purchaseOrder orderDate=&quot; 1999-10-20 &quot;> <shipTo country=&quot; US &quot;> <name>Alice Smith</name> <street>12 Maple Street</street> <city>Mill Valley</city> <state> CA </state> <zip> 90952 </zip> </shipTo> <billTo country=&quot;US&quot;> <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=&quot; 872-AA &quot;> < productName >Lawn mower</productName> <quantity> 2 </quantity> <USPrice> 148.95 </USPrice> <comment>Confirm this is electric</comment> </item> <item partNum=&quot;926-AA&quot;> <productName>Baby Monitor</productName> <quantity>1</quantity> <USPrice>39.98</USPrice> <shipDate>1999-05-21</shipDate> </item> </items> </purchaseOrder> orden_compra.xml
  • 14. XML Schema 1/3 <schema xmlns=&quot; http://www.w3.org/2001/XMLSchema &quot;> <annotation> <documentation xml:lang=&quot;en&quot;> Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. </documentation> </annotation> <element name=&quot;purchaseOrder&quot; type=&quot;PurchaseOrderType&quot;/> <!-- Tipo complejo --> <complexType name=&quot;PurchaseOrderType&quot;> <sequence> <element name=&quot;shipTo&quot; type=&quot;USAddress&quot;/> <element name=&quot;billTo&quot; type=&quot;USAddress&quot;/> <element ref=&quot;comment&quot; minOccurs=&quot;0&quot;/> <element name=&quot;items&quot; type=&quot;Items&quot;/> </sequence> <attribute name=&quot;orderDate&quot; type=&quot;date&quot;/> </complexType>
  • 15. XML Schema 2/3 <!-- Tipo complejo --> <complexType name=&quot;USAddress&quot;> <sequence> <element name=&quot;name&quot; type=&quot;string&quot;/> <element name=&quot;street&quot; type=&quot;string&quot;/> <element name=&quot;city&quot; type=&quot;string&quot;/> <element name=&quot;state&quot; type=&quot;string&quot;/> <element name=&quot;zip&quot; type=&quot;decimal&quot;/> </sequence> <attribute name=&quot;country&quot; type=&quot;NMTOKEN&quot; fixed=&quot;US&quot;/> </complexType> <!-- Tipo simple --> <simpleType name=&quot;SKU&quot;> <restriction base=&quot;string&quot;> <pattern value=&quot;\d{3}-[A-Z]{2}&quot;/> </restriction> </simpleType> <!-- Elemento --> <element name=&quot;comment&quot; type=&quot;string&quot;/>
  • 16. XML Schema Ej (3) <complexType name=&quot;Items&quot;> <sequence> <element name=&quot;item&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;> <complexType> <sequence> <element name=&quot;productName&quot; type=&quot;string&quot;/> <element name=&quot;quantity&quot;> <simpleType> <restriction base=&quot;positiveInteger&quot;> <maxExclusive value=&quot;100&quot;/> </restriction> </simpleType> </element> <element name=&quot;USPrice&quot; type=&quot;decimal&quot;/> <element ref=&quot;comment&quot; minOccurs=&quot;0&quot;/> <element name=&quot;shipDate&quot; type=&quot;date&quot; minOccurs=&quot;0&quot;/> </sequence> <attribute name=&quot;partNum&quot; type=&quot;SKU&quot; use=&quot;required&quot;/> </complexType> </element> </sequence> </complexType> </schema>
  • 17. Tipos de tipos de dato Singulares Primitivos Derivados Listas Dependientes de un solo tipo Uniones Listas heterogeneas (varios tipos)
  • 18. Derivacion de tipos Por restriccion Tipico: string restringido a una regexp Por listado Por union 'Tipos complejos'
  • 19. Elemento, Compuesto, Attr Tipo complejo = compuesto tipos simples ComplexType contiene elementos y atributos <complexType name=&quot;USAddress&quot;> <sequence> <element name=&quot;name&quot; type=&quot;string&quot;/> <element name=&quot;street&quot; type=&quot;string&quot;/> <element name=&quot;city&quot; type=&quot;string&quot;/> <element name=&quot;state&quot; type=&quot;string&quot;/> <element name=&quot;zip&quot; type=&quot;decimal&quot;/> </sequence> <attribute name=&quot;country&quot; type=&quot;NMTOKEN&quot; fixed=&quot;US&quot;/> </complexType>
  • 20. Restricciones multiplicidad Comment es opcional minOccurs default 1 maxOccurs default 1 (“unbounded) Atributos use = (required, optional, prohibited) Valores fijos y default fixed = “...” default = “...” <element ref=&quot;comment&quot; minOccurs=&quot;0&quot;/>
  • 21. Tipos simples string byte, unsignedByte (-1,126;0,255) base64Binary (GpM7) hexBinary (FF00EE) integer, positiveInteger, negativeInteger int, long, short, float, double, boolean time, duration Qname, anyURI
  • 22. Nuevos tipos simples <simpleType name=”myInteger”> <restriction base=”integer”> <minInclusive value=”10000”/> <maxInclusive value=”99999”/> </restriction> </simpleType> Se definen como restricciones en base a otros tipos de dato simples Pueden ser anónimos (ej.: quantity)
  • 23. Nuevos tipos enumerados <simpleType name=”deptosIngenieria”> <restriction base=”string”> <enumeration value=”cc”/> <enumeration value=”ci”/> <enumeration value=”eh”/> <enumeration value=”ma”/> ... <enumeration value=”in”/> </restriction> </simpleType> Se definen por extensión
  • 24. Tipo lista <simpleType name=”listDeptos”> <list itemType=”deptosIngenieria”/> </simpleType> <!-- Ejemplo --> <listado>in ma cc</listado> Soporte nativo para listas en elementos
  • 25. Contenido mixed Mixed en este mundo significa texto plano y elementos <element name=”body”> <complexType mixed=”true”> <element name=”b”/> </complexType> </element>
  • 26.  
  • 27. Otras características Soporte para anotaciones Extensiones a sequence Choice Grupos de atributos compartidos Espacios de nombres Tipos globales, locales, scope de archivo Tipos abstractos no pueden tener instancias, sólo subtipos