Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. Seong Jong Choi"> Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. Seong Jong Choi">

Presentation is loading. Please wait.

Presentation is loading. Please wait.

XML Schema Primer Seong Jong Choi Multimedia Lab.

Similar presentations


Presentation on theme: "XML Schema Primer Seong Jong Choi Multimedia Lab."— Presentation transcript:

1 XML Schema Primer Seong Jong Choi chois@mmlab.net Multimedia Lab.
Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea

2 po.xsd 2019-04-19 Seong Jong Choi
<xsd:schema xmlns:xsd=" <xsd:annotation> <xsd:documentation xml:lang="en"> Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. </xsd:documentation> </xsd:annotation> <xsd:element name="purchaseOrder" type="PurchaseOrderType"/> <xsd:element name="comment" type="xsd:string"/> <xsd:complexType name="PurchaseOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> <xsd:complexType name="USAddress"> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/> <xsd:complexType name="Items"> <xsd:sequence> <xsd:element name="item" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:element name="productName" type="xsd:string"/> <xsd:element name="quantity"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="USPrice" type="xsd:decimal"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="partNum" type="SKU" use="required"/> </xsd:complexType> <!-- Stock Keeping Unit, a code for identifying products --> <xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:schema> Seong Jong Choi

3 Schema Element <xsd:schema xmlns:xsd=" </xsd:schema> <xsd:schema> … </xsd:schema> XML schema element xmlns:xsd=“ Declaration for XML Schema namespace. The prefix xsd: is used by convention to denote the XML Schema namespace, although any prefix can be used. Seong Jong Choi

4 Declaration vs. Definition
Declarations enable elements and attributes with specific names and types (both simple and complex) to appear in document instances. <xsd:element name="purchaseOrder" type="PurchaseOrderType"/> <xsd:element name="comment" type="xsd:string"/> Definitions create new types (both simple and complex) <xsd:complexType name="PurchaseOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> Seong Jong Choi

5 Complex Type vs Simple Type
complex types which allow elements in their content and may carry attributes, and simple types which cannot have element content and cannot carry attributes. Seong Jong Choi

6 Declaration <xsd:element name="purchaseOrder" type="PurchaseOrderType"/> <xsd:element name="comment" type="xsd:string"/> The valid XML instance should have elements of “purchaceOrder” and “comment” whose types are “PurchaseOrderType” and “xsd:string.” Seong Jong Choi

7 Definition – complex type
<xsd:complexType name="PurchaseOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> Define the complex type “purchaseOrderType” Allow elements & attributes contain a set of element declarations, element references, and attribute declarations. element declarations element reference attribute declaration Seong Jong Choi

8 Definition – complex type
<xsd:complexType name="PurchaseOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> all attribute declarations must reference simple types because, unlike element declarations, attributes cannot contain other elements or other attributes. attribute declaration Seong Jong Choi

9 Complex Type Definition - Sequence
<xsd:complexType name="PurchaseOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> xsd:sequence the elements must appear in the same sequence (order) in which they are declared. Seong Jong Choi

10 Element Reference <xsd:complexType name="PurchaseOrderType">
<xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> This declaration references an existing element, comment, that was declared elsewhere in the purchase order schema. In general, the value of the ref attribute must reference a global element, i.e. one that has been declared under schema rather than as part of a complex type definition. element reference Seong Jong Choi

11 Definition – simple type
<!-- Stock Keeping Unit, a code for identifying products --> <xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType> Define the simple type “SKU” Allow no element & no attribute Seong Jong Choi

12 Occurrence Constraints
<xsd:element ref="comment" minOccurs="0"/> maxOccurs The maximum number of times an element may appear is determined by the value of a maxOccurs attribute in its declaration. Use “unbounded” to indicate there is no maximum number of occurrences The default value for both the minOccurs and the maxOccurs is 1 if you specify a value for only the minOccurs attribute, it is 0 or 1 if you specify a value for only the maxOccurs attribute, it must be 1 or more. If both attributes are omitted, the element must appear exactly once. Attributes may appear once or not at all Example: Table 1 Seong Jong Choi

13 Defining myInteger, Range 10000-99999
Simple Type Examples: Table 2 We use the restriction element to indicate the existing (base) type, and to identify the "facets" that constrain the range of values Defining myInteger, Range <xsd:simpleType name="myInteger"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="10000"/> <xsd:maxInclusive value="99999"/> </xsd:restriction> </xsd:simpleType> Seong Jong Choi

14 Using the Enumeration Facet
Simple Type Using the Enumeration Facet <xsd:simpleType name="USState"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="AK"/> <xsd:enumeration value="AL"/> <xsd:enumeration value="AR"/> <!-- and so on > </xsd:restriction> </xsd:simpleType> Seong Jong Choi

15 Simple Type - List Example
Schema <xsd:simpleType name="listOfMyIntType"> <xsd:list itemType="myInteger"/> </xsd:simpleType> An instance <listOfMyInt> </listOfMyInt> XML Schema has three built-in list types, they are NMTOKENS, IDREFS, and ENTITIES Seong Jong Choi

16 Simple Type - Union Schema Example An instance
<xsd:simpleType name="zipUnion"> <xsd:union memberTypes="USState listOfMyIntType"/> </xsd:simpleType> An instance <zips>CA</zips> <zips> </zips> <zips>AK</zips> Seong Jong Choi

17 Anonymous Type Two Anonymous Type Definitions
<xsd:complexType name="Items"> <xsd:sequence> <xsd:element name="item" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:element name="productName" type="xsd:string"/> <xsd:element name="quantity"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="USPrice" type="xsd:decimal"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="partNum" type="SKU" use="required"/> </xsd:complexType> Seong Jong Choi


Download ppt "XML Schema Primer Seong Jong Choi Multimedia Lab."

Similar presentations


Ads by Google