1 / 12

XML Schema

Leonidas Fegaras. XML Schema. XML Schema. Replaces DTD Object-Oriented schemas Richer set of basic types Better ways of deriving new type declarations from old ones type extension type restriction Database-style key concept Uses namespaces Compatible with other standards. Base Types.

jump
Download Presentation

XML Schema

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Leonidas Fegaras XML Schema

  2. XML Schema • Replaces DTD • Object-Oriented schemas • Richer set of basic types • Better ways of deriving new type declarations from old ones • type extension • type restriction • Database-style key concept • Uses namespaces • Compatible with other standards

  3. Base Types • string, float, double, decimal, boolean • timeDuration P10Y1M5T1H20M5S 10years+1month+5days+1hour+20'+5'' • binary • uriReference • QName • ID, IDref • A basic type may have properties, called facets • length, minLength, maxLength • minInclusive, maxInclusive, minExclusive, maxExclusive • enumeration for string • pattern for string • encoding for binary (eg, base64)

  4. Predefined Derived Types • Derived by restrictions on facets <xsd:simpleType name='integer' base=xsd:decimal'> <scale value='0'> </xsd:simpleType> • or multiplied in lists <xsd:simpleType name='IDREFS' base='xsd:IDREF' derivedBy='xsd:list'/> • Other built-in derived types: • Name • int • long • short • byte • positiveInteger

  5. Defining Simple Types • Enumeration <xsd:simpleType name='animal' base='xsd:string'> <xsd:enumeration value='dog'/> <xsd:enumeration value='cat'/> </xsd:simpleType> • Range restriction <xsd:simpleType name='employeeAge' base='xsd:positiveInteger'> <xsd:minInclusive value='18'/> <xsd:maxInclusive value='70'/> </xsd:simpleType> • Pattern <xsd:simpleType name='ssn' base='xsd:string'> <xsd:pattern value='\d{3}-\d{2}-\d{4}'> </xsd:simpleType> • List <xsd:simpleType name='animals' base='animal' derivedBy='xsd:list'/>

  6. Elements • Example: <xsd:element name='employee'> <xsd:complexType> <xsd:sequence> <xsd:element name='name' type='xsd:string'/> <xsd:element name='address' type='xsd:string'/> <xsd:element name='ssn' type='ssn'/> </xsd:sequence> </xsd:complexType> </xsd:element> • It corresponds to the DTD: <!ELEMENT employee (name,address,ssn)> <!ELEMENT name (#PCDATA)> <!ELEMENT address (#PCDATA)> <!ELEMENT ssn (#PCDATA)>

  7. Element Attributes • Element attributes can only appear inside xsd:complexType in an xsd:element <xsd:attribute name='ssn' type='ssn' use='required'/> <xsd:attribute name='father' type='xsd:string' use='optional'/> • Keys can be defined using XPath expressions <xsd:key name='ssn'> <xsd:selector>dept/person</xsd:selector> <xsd:field>@ssn</xsd:field> </xsd:key> • the selector defines the applicable elements • the field defines the data that are unique withing the applicable elements • xsd:unique may be used to define unique combination of values • Foreign keys are like IDRefs, but well-typed <xsd:keyref refer='ssn'> <xsd:selector>dept/person</xsd:selector> <xsd:field>@mother</xsd:field> <xsd:keyref>

  8. Other Specifiers of xsd:element • Other attributes of xsd:element • minOccurs: minimum number of occurrences • default = '1' • maxOccurs: maximum number of occurrences • default = '1' if minOccurs is not given • default = '*' otherwise • optional is when minOccurs='0' and maxOccurs=‘1' • nullable = 'true' • ref = 'type-name' • Other attributes of xsd:complexType • content = 'empty' • content = 'mixed' • content = 'elementOnly' • derivedBy = 'extension' • derivedBy = 'restriction'

  9. xsd:complexType • Any content <xsd:any> • Concatenation (A1, A2, ..., An) <xsd:sequence> A1 A2 ... An </xsd:sequence> • Alternation (A1 | A2 | ... | An) <xsd:choice> A1 A2 ... An </xsd:choice> • All but in any order (A1 & A2 & ... & An) <xsd:all> A1 A2 ... An </xsd:all>

  10. Using xsd:complexType <xsd:simpleType name='state' base='xsd:string'> <xsd:enumeration value='TX'> <xsd:enumeration value='CA'> </xsd:simpleType> <xsd:simpleType name='zip' base='xsd:string'> <xsd:pattern value='\d{5}'> </xsd:simpleType> <xsd:complexType name='Address' content='elementOnly'> <xsd:sequence> <xsd:element name='name' type='xsd:string'/> <xsd:element name='street' type='xsd:string'/> <xsd:element name='state' type='state'/> <xsd:element name='zip' type='zip'/> </xsd:sequence> </xsd:complexType> <xsd:element name='PurchaseOrder'> <xsd:complexType content='elementOnly'> <xsd:sequence> <xsd:element name='From' type='Address'/> <xsd:element name='To' type='Address'/> </xsd:sequence> </xsd:complexType> </xsd:element>

  11. Reusing Types • Extending types <xsd:complexType name='GraduateStudent' base='Student' derivedBy='extension'> <xsd:element name='gpa' type='xsd:positiveInteger'/> </xsd:complexType> • Restricting types <xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType>

  12. Using Schemas • Schema “po.xsd” <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name='PurchaseOrder'> <complexType content='elementOnly'> ... </complexType> </element> </schema> • Using targetNamespace: <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:po="http://lambda.uta.edu/PO" targetNamespace="http://lambda.uta.edu/PO"> <element name='PurchaseOrder'> <complexType content='elementOnly'> ... </complexType> </element> </schema> • XML data that conforms to this XML Schema: <?xml version="1.0"?> <po:PurchaseOrder xmlns:po="http://lambda.uta.edu/PO">

More Related