際際滷

際際滷Share a Scribd company logo
Prepared By: Dr.Saranya.K.G
An XSD Example
This will demonstrate how to write an XML Schema. You will also learn that a
schema can be written in different ways.
An XML Document
XML document called "shiporder.xml":
<?xml version="1.0" encoding="ISO-8859-1"?>
<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
</shiporder>
The XML document above consists of a root element, "shiporder", that contains a
required attribute called "orderid". The "shiporder" element contains three
different child elements: "orderperson", "shipto" and "item". The "item" element
appears twice, and it contains a "title", an optional "note" element, a "quantity",
and a "price" element.
Prepared By: Dr.Saranya.K.G
The line above: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" tells
the XML parser that this document should be validated against a schema. The line:
xsi:noNamespaceSchemaLocation="shiporder.xsd" specifies WHERE the schema
resides (here it is in the same folder as "shiporder.xml").
Create an XML Schema
Now we want to create a schema for the XML document above.
We start by opening a new file that we will call "shiporder.xsd". To create the
schema we could simply follow the structure in the XML document and define
each element as we find it. We will start with the standard XML declaration
followed by the xs:schema element that defines a schema:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
In the schema above we use the standard namespace (xs), and the URI associated
with this namespace is the Schema language definition, which has the standard
value of http://www.w3.org/2001/XMLSchema.
Next, we have to define the "shiporder" element. This element has an attribute and
it contains other elements, therefore we consider it as a complex type. The child
elements of the "shiporder" element is surrounded by a xs:sequence element that
defines an ordered sequence of sub elements:
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
</xs:element>
Then we have to define the "orderperson" element as a simple type (because it
does not contain any attributes or other elements). The type (xs:string) is prefixed
with the namespace prefix associated with XML Schema that indicates a
predefined schema data type:
Prepared By: Dr.Saranya.K.G
<xs:element name="orderperson" type="xs:string"/>
Next, we have to define two elements that are of the complex type: "shipto" and
"item". We start by defining the "shipto" element:
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
With schemas we can define the number of possible occurrences for an element
with the maxOccurs and minOccurs attributes. maxOccurs specifies the maximum
number of occurrences for an element and minOccurs specifies the minimum
number of occurrences for an element. The default value for both maxOccurs and
minOccurs is 1!
Now we can define the "item" element. This element can appear multiple times
inside a "shiporder" element. This is specified by setting the maxOccurs attribute
of the "item" element to "unbounded" which means that there can be as many
occurrences of the "item" element as the author wishes. Notice that the "note"
element is optional. We have specified this by setting the minOccurs attribute to
zero:
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
We can now declare the attribute of the "shiporder" element. Since this is a
required attribute we specify use="required".
Prepared By: Dr.Saranya.K.G
Note: The attribute declarations must always come last:
<xs:attribute name="orderid" type="xs:string" use="required"/>
Here is the complete listing of the schema file called "shiporder.xsd":
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Prepared By: Dr.Saranya.K.G
Divide the Schema
The previous design method is very simple, but can be difficult to read and
maintain when documents are complex.
The next design method is based on defining all elements and attributes first, and
then referring to them using the ref attribute.
Here is the new design of the schema file ("shiporder.xsd"):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>
<!-- definition of complex elements -->
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="country"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
Prepared By: Dr.Saranya.K.G
<xs:element ref="note" minOccurs="0"/>
<xs:element ref="quantity"/>
<xs:element ref="price"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element ref="orderperson"/>
<xs:element ref="shipto"/>
<xs:element ref="item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="orderid" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>

More Related Content

Similar to 3-SchemaExamples.pdf (20)

PDF
Xsd tutorial
Ashoka Vanjare
PPTX
Schematron
Emiel Paasschens
PDF
Xml schema
Prabhakaran V M
PDF
Basics of JSON (JavaScript Object Notation) with examples
Sanjeev Kumar Jaiswal
PDF
Generation_XSD_Article - Part 3.pdf
David Harrison
PDF
SXML: S-expression eXtensible Markup Language
elliando dias
PPTX
Json parser
Son Nguyen
PPT
02 xml schema
Baskarkncet
PDF
130919 jim cordy - when is a clone not a clone
Ptidej Team
PPTX
In Pursuit of the Grand Unified Template
hannonhill
PPT
DB2 Native XML
Amol Pujari
PPTX
Xsd restrictions, xsl elements, dhtml
AMIT VIRAMGAMI
PPTX
JSON & AJAX.pptx
dyumna2
PDF
Abap basics 01
yours4ever002
PPT
XML Schema
yht4ever
PPT
XMLLec1.pptsfsfsafasfasdfasfdsadfdsfdf dfdsfds
Kamrankhan925215
PPT
XMLLec1 (1xML lecturefsfsdfsdfdsfdsfsdfsdfdsf
Kamrankhan925215
PPT
XML stands for EXtensible Markup Language
NetajiGandi1
PPT
JavaScript - An Introduction
Manvendra Singh
PPTX
Working with JSON
Lovely Professional University
Xsd tutorial
Ashoka Vanjare
Schematron
Emiel Paasschens
Xml schema
Prabhakaran V M
Basics of JSON (JavaScript Object Notation) with examples
Sanjeev Kumar Jaiswal
Generation_XSD_Article - Part 3.pdf
David Harrison
SXML: S-expression eXtensible Markup Language
elliando dias
Json parser
Son Nguyen
02 xml schema
Baskarkncet
130919 jim cordy - when is a clone not a clone
Ptidej Team
In Pursuit of the Grand Unified Template
hannonhill
DB2 Native XML
Amol Pujari
Xsd restrictions, xsl elements, dhtml
AMIT VIRAMGAMI
JSON & AJAX.pptx
dyumna2
Abap basics 01
yours4ever002
XML Schema
yht4ever
XMLLec1.pptsfsfsafasfasdfasfdsadfdsfdf dfdsfds
Kamrankhan925215
XMLLec1 (1xML lecturefsfsdfsdfdsfdsfsdfsdfdsf
Kamrankhan925215
XML stands for EXtensible Markup Language
NetajiGandi1
JavaScript - An Introduction
Manvendra Singh
Working with JSON
Lovely Professional University

More from KGSCSEPSGCT (12)

PPT
Introduction to Distributed Systems
KGSCSEPSGCT
PPT
Unit4_Managing Contracts.ppt
KGSCSEPSGCT
PPT
WSstandards.ppt
KGSCSEPSGCT
PPT
UDDI.ppt
KGSCSEPSGCT
PPT
ROA.ppt
KGSCSEPSGCT
PPT
REST Introduction.ppt
KGSCSEPSGCT
PDF
Converting DTDs to XML Schemas.pdf
KGSCSEPSGCT
PDF
XSL- XSLT.pdf
KGSCSEPSGCT
PDF
XML-INTRODUCTION.pdf
KGSCSEPSGCT
PPT
XSLT.ppt
KGSCSEPSGCT
PPT
2-DTD.ppt
KGSCSEPSGCT
PDF
XML Schema.pdf
KGSCSEPSGCT
Introduction to Distributed Systems
KGSCSEPSGCT
Unit4_Managing Contracts.ppt
KGSCSEPSGCT
WSstandards.ppt
KGSCSEPSGCT
UDDI.ppt
KGSCSEPSGCT
ROA.ppt
KGSCSEPSGCT
REST Introduction.ppt
KGSCSEPSGCT
Converting DTDs to XML Schemas.pdf
KGSCSEPSGCT
XSL- XSLT.pdf
KGSCSEPSGCT
XML-INTRODUCTION.pdf
KGSCSEPSGCT
XSLT.ppt
KGSCSEPSGCT
2-DTD.ppt
KGSCSEPSGCT
XML Schema.pdf
KGSCSEPSGCT
Ad

Recently uploaded (20)

PPT
SF 9_Unit 1.ppt software engineering ppt
AmarrKannthh
PDF
June 2025 Top 10 Sites -Electrical and Electronics Engineering: An Internatio...
elelijjournal653
PDF
Plant Control_EST_85520-01_en_AllChanges_20220127.pdf
DarshanaChathuranga4
PPT
FINAL plumbing code for board exam passer
MattKristopherDiaz
PDF
01-introduction to the ProcessDesign.pdf
StiveBrack
PDF
Rapid Prototyping for XR: Lecture 2 - Low Fidelity Prototyping.
Mark Billinghurst
PDF
Rapid Prototyping for XR: Lecture 1 Introduction to Prototyping
Mark Billinghurst
PPTX
Introduction to File Transfer Protocol with commands in FTP
BeulahS2
PPTX
Computer network Computer network Computer network Computer network
Shrikant317689
PPTX
Mobile database systems 20254545645.pptx
herosh1968
PPTX
Work at Height training for workers .pptx
cecos12
PPTX
CST413 KTU S7 CSE Machine Learning Clustering K Means Hierarchical Agglomerat...
resming1
PDF
Rapid Prototyping for XR: Lecture 5 - Cross Platform Development
Mark Billinghurst
PPTX
Stability of IBR Dominated Grids - IEEE PEDG 2025 - short.pptx
ssuser307730
PPTX
MATERIAL SCIENCE LECTURE NOTES FOR DIPLOMA STUDENTS
SAMEER VISHWAKARMA
PDF
CLIP_Internals_and_Architecture.pdf sdvsdv sdv
JoseLuisCahuanaRamos3
PPTX
FSE_LLM4SE1_A Tool for In-depth Analysis of Code Execution Reasoning of Large...
cl144
PPSX
OOPS Concepts in Python and Exception Handling
Dr. A. B. Shinde
PPTX
CST413 KTU S7 CSE Machine Learning Introduction Parameter Estimation MLE MAP ...
resming1
PDF
lesson4-occupationalsafetyandhealthohsstandards-240812020130-1a7246d0.pdf
arvingallosa3
SF 9_Unit 1.ppt software engineering ppt
AmarrKannthh
June 2025 Top 10 Sites -Electrical and Electronics Engineering: An Internatio...
elelijjournal653
Plant Control_EST_85520-01_en_AllChanges_20220127.pdf
DarshanaChathuranga4
FINAL plumbing code for board exam passer
MattKristopherDiaz
01-introduction to the ProcessDesign.pdf
StiveBrack
Rapid Prototyping for XR: Lecture 2 - Low Fidelity Prototyping.
Mark Billinghurst
Rapid Prototyping for XR: Lecture 1 Introduction to Prototyping
Mark Billinghurst
Introduction to File Transfer Protocol with commands in FTP
BeulahS2
Computer network Computer network Computer network Computer network
Shrikant317689
Mobile database systems 20254545645.pptx
herosh1968
Work at Height training for workers .pptx
cecos12
CST413 KTU S7 CSE Machine Learning Clustering K Means Hierarchical Agglomerat...
resming1
Rapid Prototyping for XR: Lecture 5 - Cross Platform Development
Mark Billinghurst
Stability of IBR Dominated Grids - IEEE PEDG 2025 - short.pptx
ssuser307730
MATERIAL SCIENCE LECTURE NOTES FOR DIPLOMA STUDENTS
SAMEER VISHWAKARMA
CLIP_Internals_and_Architecture.pdf sdvsdv sdv
JoseLuisCahuanaRamos3
FSE_LLM4SE1_A Tool for In-depth Analysis of Code Execution Reasoning of Large...
cl144
OOPS Concepts in Python and Exception Handling
Dr. A. B. Shinde
CST413 KTU S7 CSE Machine Learning Introduction Parameter Estimation MLE MAP ...
resming1
lesson4-occupationalsafetyandhealthohsstandards-240812020130-1a7246d0.pdf
arvingallosa3
Ad

3-SchemaExamples.pdf

  • 1. Prepared By: Dr.Saranya.K.G An XSD Example This will demonstrate how to write an XML Schema. You will also learn that a schema can be written in different ways. An XML Document XML document called "shiporder.xml": <?xml version="1.0" encoding="ISO-8859-1"?> <shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="shiporder.xsd"> <orderperson>John Smith</orderperson> <shipto> <name>Ola Nordmann</name> <address>Langgt 23</address> <city>4000 Stavanger</city> <country>Norway</country> </shipto> <item> <title>Empire Burlesque</title> <note>Special Edition</note> <quantity>1</quantity> <price>10.90</price> </item> <item> <title>Hide your heart</title> <quantity>1</quantity> <price>9.90</price> </item> </shiporder> The XML document above consists of a root element, "shiporder", that contains a required attribute called "orderid". The "shiporder" element contains three different child elements: "orderperson", "shipto" and "item". The "item" element appears twice, and it contains a "title", an optional "note" element, a "quantity", and a "price" element.
  • 2. Prepared By: Dr.Saranya.K.G The line above: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" tells the XML parser that this document should be validated against a schema. The line: xsi:noNamespaceSchemaLocation="shiporder.xsd" specifies WHERE the schema resides (here it is in the same folder as "shiporder.xml"). Create an XML Schema Now we want to create a schema for the XML document above. We start by opening a new file that we will call "shiporder.xsd". To create the schema we could simply follow the structure in the XML document and define each element as we find it. We will start with the standard XML declaration followed by the xs:schema element that defines a schema: <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ... </xs:schema> In the schema above we use the standard namespace (xs), and the URI associated with this namespace is the Schema language definition, which has the standard value of http://www.w3.org/2001/XMLSchema. Next, we have to define the "shiporder" element. This element has an attribute and it contains other elements, therefore we consider it as a complex type. The child elements of the "shiporder" element is surrounded by a xs:sequence element that defines an ordered sequence of sub elements: <xs:element name="shiporder"> <xs:complexType> <xs:sequence> ... </xs:sequence> </xs:complexType> </xs:element> Then we have to define the "orderperson" element as a simple type (because it does not contain any attributes or other elements). The type (xs:string) is prefixed with the namespace prefix associated with XML Schema that indicates a predefined schema data type:
  • 3. Prepared By: Dr.Saranya.K.G <xs:element name="orderperson" type="xs:string"/> Next, we have to define two elements that are of the complex type: "shipto" and "item". We start by defining the "shipto" element: <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> With schemas we can define the number of possible occurrences for an element with the maxOccurs and minOccurs attributes. maxOccurs specifies the maximum number of occurrences for an element and minOccurs specifies the minimum number of occurrences for an element. The default value for both maxOccurs and minOccurs is 1! Now we can define the "item" element. This element can appear multiple times inside a "shiporder" element. This is specified by setting the maxOccurs attribute of the "item" element to "unbounded" which means that there can be as many occurrences of the "item" element as the author wishes. Notice that the "note" element is optional. We have specified this by setting the minOccurs attribute to zero: <xs:element name="item" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string" minOccurs="0"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:element> We can now declare the attribute of the "shiporder" element. Since this is a required attribute we specify use="required".
  • 4. Prepared By: Dr.Saranya.K.G Note: The attribute declarations must always come last: <xs:attribute name="orderid" type="xs:string" use="required"/> Here is the complete listing of the schema file called "shiporder.xsd": <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="item" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string" minOccurs="0"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="orderid" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema>
  • 5. Prepared By: Dr.Saranya.K.G Divide the Schema The previous design method is very simple, but can be difficult to read and maintain when documents are complex. The next design method is based on defining all elements and attributes first, and then referring to them using the ref attribute. Here is the new design of the schema file ("shiporder.xsd"): <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- definition of simple elements --> <xs:element name="orderperson" type="xs:string"/> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> <!-- definition of attributes --> <xs:attribute name="orderid" type="xs:string"/> <!-- definition of complex elements --> <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element ref="name"/> <xs:element ref="address"/> <xs:element ref="city"/> <xs:element ref="country"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="item"> <xs:complexType> <xs:sequence> <xs:element ref="title"/>
  • 6. Prepared By: Dr.Saranya.K.G <xs:element ref="note" minOccurs="0"/> <xs:element ref="quantity"/> <xs:element ref="price"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element ref="orderperson"/> <xs:element ref="shipto"/> <xs:element ref="item" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute ref="orderid" use="required"/> </xs:complexType> </xs:element> </xs:schema>