Recommended Learning To Love Forms (Web Directions South '07)
XML em Aplicações e-Business
Xml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
CSS Technieken Toegelicht
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)
Fairness-Aware Data Mining
Databeers: Big Crisis Data
Observational studies in social media
Content-based link prediction
Graph Partitioning and Spectral Methods
Text Indexing / Inverted Indices
More Related Content Learning To Love Forms (Web Directions South '07)
XML em Aplicações e-Business
Xml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
CSS Technieken Toegelicht
More from Carlos Castillo (ChaTo) (20) 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)
Fairness-Aware Data Mining
Databeers: Big Crisis Data
Observational studies in social media
Content-based link prediction
Graph Partitioning and Spectral Methods
Text Indexing / Inverted Indices
XML Schema1. 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="1.0"?> <xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.com" targetNamespace="http://www.example.com" elementFormDefault="qualified"> <xsd: element name ="note"> <xsd: complexType > <xsd: sequence > <xsd:element name="to" type ="xsd:string"/> <xsd:element name="from" type="xsd:string"/> <xsd:element name="heading" type="xsd:string"/> <xsd:element name="body" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> note.xsd 9. Ejemplo simple XML Schema + doc. <xsd:element name="note"> <xsd:complexType> <xsd:sequence> <xsd:element name="to" type="xsd:string"/> <xsd:element name="from" type="xsd:string"/> <xsd:element name="heading" type="xsd:string"/> <xsd:element name="body" type="xsd:string"/> </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="note"> <xsd:complexType> <xsd:sequence> <xsd:element name="to" type="xsd:string"/> <xsd:element name="from" type="xsd:string"/> <xsd:element name="heading" type="xsd:string"/> <xsd:element name="body" type="xsd:string"/> </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="note"> <xsd:complexType> <xsd:sequence> <xsd:element name="to" type="xsd:string"/> <xsd:element name="priority" type=" xsd:integer "/> <xsd:element name="heading"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="body" type="xsd:string"/> </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="1.0"?> <purchaseOrder orderDate="1999-10-20"> <shipTo country="US"> <name>Alice Smith</name> <street>12 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> orden_compra.xml 13. Orden de compra (tipos dato) <?xml version="1.0"?> <purchaseOrder orderDate=" 1999-10-20 "> <shipTo country=" US "> <name>Alice Smith</name> <street>12 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 >Lawn mower</productName> <quantity> 2 </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> orden_compra.xml 14. XML Schema 1/3 <schema xmlns=" http://www.w3.org/2001/XMLSchema "> <annotation> <documentation xml:lang="en"> Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. </documentation> </annotation> <element name="purchaseOrder" type="PurchaseOrderType"/> <!-- Tipo complejo --> <complexType name="PurchaseOrderType"> <sequence> <element name="shipTo" type="USAddress"/> <element name="billTo" type="USAddress"/> <element ref="comment" minOccurs="0"/> <element name="items" type="Items"/> </sequence> <attribute name="orderDate" type="date"/> </complexType> 15. XML Schema 2/3 <!-- Tipo complejo --> <complexType name="USAddress"> <sequence> <element name="name" type="string"/> <element name="street" type="string"/> <element name="city" type="string"/> <element name="state" type="string"/> <element name="zip" type="decimal"/> </sequence> <attribute name="country" type="NMTOKEN" fixed="US"/> </complexType> <!-- Tipo simple --> <simpleType name="SKU"> <restriction base="string"> <pattern value="\d{3}-[A-Z]{2}"/> </restriction> </simpleType> <!-- Elemento --> <element name="comment" type="string"/> 16. XML Schema Ej (3) <complexType name="Items"> <sequence> <element name="item" minOccurs="0" maxOccurs="unbounded"> <complexType> <sequence> <element name="productName" type="string"/> <element name="quantity"> <simpleType> <restriction base="positiveInteger"> <maxExclusive value="100"/> </restriction> </simpleType> </element> <element name="USPrice" type="decimal"/> <element ref="comment" minOccurs="0"/> <element name="shipDate" type="date" minOccurs="0"/> </sequence> <attribute name="partNum" type="SKU" use="required"/> </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="USAddress"> <sequence> <element name="name" type="string"/> <element name="street" type="string"/> <element name="city" type="string"/> <element name="state" type="string"/> <element name="zip" type="decimal"/> </sequence> <attribute name="country" type="NMTOKEN" fixed="US"/> </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="comment" minOccurs="0"/> 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> 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