Presentation is loading. Please wait.

Presentation is loading. Please wait.

Working with Namespaces and Schemas

Similar presentations


Presentation on theme: "Working with Namespaces and Schemas"— Presentation transcript:

1 Working with Namespaces and Schemas
New Perspectives on XML Tutorial 4

2 Working with Namespaces
Name collision occurs when elements from two or more documents share the same name. Name collision is not a problem if you are not concerned with validation. The document content only needs to be well-formed. However, name collision will keep a document from being validated. New Perspectives on XML Tutorial 4

3 Name Collision This figure shows two documents each with a Name element New Perspectives on XML Tutorial 4

4 Working with Namespaces
Example of the collision of Name element <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Collection [ <!ELEMENT Collection (Book, Author)> <!ELEMENT Book (Name, Publisher)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Publisher (#PCDATA)> <!ELEMENT Author (Name, Address)> <!ELEMENT Name (First, Last)> <!ELEMENT First (#PCDATA)> <!ELEMENT Last (#PCDATA)> <!ELEMENT Address (#PCDATA)> ]> New Perspectives on XML Tutorial 4

5 Working with Namespaces
Example of the collision of Name element <Collection> <Book> <Name>XML data integration</Name> <Publisher>Mcgro</Publisher> </Book> <Author> <Name> <First>Alice</First> <Last>Jay</Last> </Name> <Address>New York</Address> </Author> </Collection> New Perspectives on XML Tutorial 4

6 Layout of the UHOSP.XML Document
This figure shows the structure of the UHSOP.xml file and the collision between the Name element. New Perspectives on XML Tutorial 4

7 Using Namespaces to Avoid Name Collision
This figure shows how to use a namespace to avoid collision New Perspectives on XML Tutorial 4

8 New Perspectives on XML
Declaring a Namespace A namespace is a defined collection of element and attribute names. Names that belong to the same namespace must be unique. Elements can share the same name if they reside in different namespaces. Namespaces must be declared before they can be used. New Perspectives on XML Tutorial 4

9 New Perspectives on XML
Declaring a Namespace A namespace can be declared in the prolog or as an element attribute. The syntax to declare a namespace in the prolog is: <?xml:namespace ns=“URI” prefix=“prefix”?> Where URI is a Uniform Resource Identifier that assigns a unique name to the namespace, and prefix is a string of letters that associates each element or attribute in the document with the declared namespace. New Perspectives on XML Tutorial 4

10 New Perspectives on XML
Declaring a Namespace For example, <?xml:namespace ns= prefix=“pat”?> Declares a namespace with the prefix “pat” and the URI The URI is not a Web address. A URI identifies a physical or an abstract resource. New Perspectives on XML Tutorial 4

11 New Perspectives on XML
URIs, URLs, and URNs A physical resource is a resource one can access and work with such as a file, a Web page, or an address. A URL is one type of URI. An abstract resource is one that doesn’t have any physical existence, the URI is used as an identifier or an ID. The URI is simply a text identifier. New Perspectives on XML Tutorial 4

12 New Perspectives on XML
URIs, URLs, and URNs A proposed type of URI is the URN or Universal Resource Name. A URN is a persistent resource identifier, meaning the user need only know the name of a resource. An agency would then retrieve a copy of the resource independent of its location. URNs take the form: urn:NID:NSS New Perspectives on XML Tutorial 4

13 Applying a Namespace to an Element
Once it has been declared and its URI specified, the namespace is applied to elements and attributes by inserting the namespace prefix before each element name that belongs to the namespace. <prefix:element> content </prefix:element> Here, prefix is the namespace prefix and element is the local part of the element name. New Perspectives on XML Tutorial 4

14 Applying a Namespace to an Element
Prefixed names are called qualified names and an element name without a namespace prefix is called an unqualified name. Qualified names can be added to a document using code entered directly into the document. However, the more common way is to add the xmlns attribute to an element. New Perspectives on XML Tutorial 4

15 Declaring a Namespace as an Element Attribute
The syntax is: xmlns:prefix=“URI” Where prefix and URI are the prefix and URI for the namespace. New Perspectives on XML Tutorial 4

16 Declaring a Namespace as an Element Attribute
For example, the code: <pat:Patients xmlns:pat=“ <Patient> <Name>Cynthia Dibbs</Name> <ID>MR </ID> <DOB> </DOB> <Age>58</Age> <Stage>II</Stage> <Performance Scale=“Karnofsky”>0.81</Performance> </Patient> </pat:Patients> New Perspectives on XML Tutorial 4

17 Declaring a Namespace as an Element Attribute
…applies the namespace namespace to the Patient element and all of its child elements. While the “pat” prefix was only added to the Patients element name, the XML parser considers the other elements parts of the Patients namespace and they inherit the namespace. New Perspectives on XML Tutorial 4

18 Declaring a Namespace as an Element Attribute
They are unqualified elements, though, because they lack a namespace prefix. Declaring a namespace by adding it as an attribute of the document’s root element places all elements in the namespace. All elements thus are children of the root element. New Perspectives on XML Tutorial 4

19 Declaring a Default Namespace
You can specify a default namespace by omitting the prefix in the namespace declaration. The element containing the namespace attribute and all of its child elements are assumed to be part of the default namespace. New Perspectives on XML Tutorial 4

20 Declaring a Default Namespace
Example of declaring a default Namespace <Patients xmlns=“ <Patient> <Name>Cynthia Dibbs</Name> <ID>MR </ID> <DOB> </DOB> <Age>58</Age> <Stage>II</Stage> </Patient> …. </Patients> New Perspectives on XML Tutorial 4

21 Using Namespaces with Attributes
Attributes, like elements, can become qualified by adding the namespace prefix to the attribute name. For example, prefix:attribute=“value” New Perspectives on XML Tutorial 4

22 Using Namespaces with Attributes
No element may contain two attributes with the same name. No element may contain two qualified attribute names with the same local part, pointing to identical namespaces, even if the prefixes are different. New Perspectives on XML Tutorial 4

23 Using Namespaces with Attributes
Example of Invalid Namespaces <Document xmlns:pat1=“ xmlns:pat2=“ <Name pat1:att1=“1” pat1:att1=“2” /> <Name pat1:att1=“1” pat2:att1=“2” /> </Document> New Perspectives on XML Tutorial 4

24 New Perspectives on XML
Namespaces and DTDs Documents that contain namespaces must follow the same rules for XML validity as ones without namespaces. An xmlns attribute used to declare a namespace must be included in the DTD, declared as a fixed value. New Perspectives on XML Tutorial 4

25 New Perspectives on XML
Namespaces and DTDs Example of XML document using Namespaces <Collection> <Book xmlns=" <Name>XML data integration</Name> <Publisher>Mcgro</Publisher> </Book> <Au:Author xmlns:Au=" <Au:Name> <Au:First>Alice</Au:First> <Au:Last>Jay</Au:Last> </Au:Name> <Au:Address>New York</Au:Address> </Au:Author> </Collection> New Perspectives on XML Tutorial 4

26 New Perspectives on XML
Namespaces and DTDs Example of XML document using Namespaces <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Collection [ <!ELEMENT Collection (Book, Au:Author)> <!ELEMENT Book (Name, Publisher)> <!ATTLIST Book xmlns CDATA #FIXED " <!ELEMENT Name (#PCDATA)> <!ELEMENT Publisher (#PCDATA)> <!ELEMENT Au:Author (Au:Name, Au:Address)> <!ATTLIST Au:Author xmlns:Au CDATA #FIXED " <!ELEMENT Au:Name (Au:First, Au:Last)> <!ELEMENT Au:First (#PCDATA)> <!ELEMENT Au:Last (#PCDATA)> <!ELEMENT Au:Address (#PCDATA)> ]> New Perspectives on XML Tutorial 4

27 New Perspectives on XML
Schemas A schema is an XML document that defines the content and structure of one or more XML documents. The XML document containing the content is called the instance document. New Perspectives on XML Tutorial 4

28 Comparing Schemas and DTDs
This figure compares schemas and DTDs New Perspectives on XML Tutorial 4

29 New Perspectives on XML
Schema Dialects There is no single schema form. Several schema “dialects” have been developed in the XML language. Support for a particular schema depends on the XML parser being used for validation. New Perspectives on XML Tutorial 4

30 Schema Dialects This figure shows a few schema dialects
New Perspectives on XML Tutorial 4

31 New Perspectives on XML
Starting a Schema File A schema is always placed in a separate XML document that is referenced by the instance document. XML Schema is stored in files with the .xsd extension XDR schema is stored in files with the .xdr New Perspectives on XML Tutorial 4

32 New Perspectives on XML
Starting a Schema File Root element of XML schema is named “schema” <xsd:schema xmlns:xsd=“ document specifications </xsd:schema> New Perspectives on XML Tutorial 4

33 Elements and Attributes of the Patient Document
This figure shows the elements and attributes of the Patient document New Perspectives on XML Tutorial 4

34 New Perspectives on XML
Schema Types XML Schema recognize two categories of element types: complex and simple. A complex type element has one or more attributes, or is the parent to one or more child elements. A simple type element contains only character data and has no attributes. New Perspectives on XML Tutorial 4

35 Schema Types This figure shows types of elements
New Perspectives on XML Tutorial 4

36 New Perspectives on XML
Simple Type Elements Use the following syntax to declare a simple type element in XML Schema: <element name=“name” type =“type”/> Here, name is the name of the element in the instance document and type is the data type of the element. A namespace prefix can also be used <xsd:element name=“name” type=“xsd:type”/> New Perspectives on XML Tutorial 4

37 Understanding Data Types
XML Schema supports two data types: built-in and user-derived. A built-in data type is part of the XML Schema specifications and is available to all XML Schema authors. A user-derived data type is created by the XML Schema author for specific data values in the instance document. New Perspectives on XML Tutorial 4

38 Understanding Data Types
Built-in data types can be divided into primitive and derived data type. A primitive data type, also called a base type, is one of 19 fundamental data types not defined in terms of other types. A derived data type is a collection of 25 data types that the XML Schema developers created based on the 19 primitive types. New Perspectives on XML Tutorial 4

39 Understanding Data Types
This figure shows the 44 built-in data types New Perspectives on XML Tutorial 4

40 Understanding Data Types
This figure shows a partial description of XML Schema data types New Perspectives on XML Tutorial 4

41 Understanding Data Types
Example of the limitation of Age element to only positive integers <element name=“Age” type=“positiveInteger” /> Example of element Age in XML document <Age>29</Age> New Perspectives on XML Tutorial 4

42 New Perspectives on XML
Complex Type Elements The syntax for complex type elements is: <element name=“name”> <complexType> compositor element declarations attribute declarations </complexType> </element> New Perspectives on XML Tutorial 4

43 New Perspectives on XML
Complex Type Elements Here, name is the name of the element in the instance document, element declarations are simple type element declarations for each child element, compositors define how the list of elements is to be organized, and attribute declarations define any of the attributes of the elements. New Perspectives on XML Tutorial 4

44 New Perspectives on XML
Compositors A compositor is a schema tag that defines how the list will be treated. Three types of compositors are supported: sequence, choice, and all. The sequence compositor forces elements to be entered in the same order as indicated in the schema. New Perspectives on XML Tutorial 4

45 New Perspectives on XML
Compositors The choice compositor allows any one of the items in the list to be used. The all compositor allows any of the items to appear in any order. Compositors may be nested inside of one another. New Perspectives on XML Tutorial 4

46 Compositors <element name="name"> <complexType>
Example of sequence compositor <element name="name"> <complexType> <sequence> <element name="first" type="string" /> <element name="last" type="string" /> <element name="age" type="positiveInteger" /> </sequence> </complexType> </element> sequence.xsd New Perspectives on XML Tutorial 4

47 Compositors Example of XML document conforming to schema1.xsd <name xmlns:xsi=" xsi:schemaLocation=" sequence.xsd"> <first>David</first> <last>Joe</last> <age>29</age> </name> sequence.xml New Perspectives on XML Tutorial 4

48 Compositors <element name="Sponsor" > <complexType>
Example of choice compositor <element name="Sponsor" > <complexType> <choice> <element name="Parent" type="string" /> <element name="Guardian" type="string" /> </choice> </complexType> </element> choice.xsd New Perspectives on XML Tutorial 4

49 Compositors <element name="Family"> <complexType>
Example of all compositor <element name="Family"> <complexType> <all> <element name="Father" type="string" /> <element name="Mother" type="string" /> </all> </complexType> </element> all.xsd New Perspectives on XML Tutorial 4

50 Compositors mix.xsd Example of mix compositor
<element name="Account"> <complexType> <sequence> <choice> <element name="Person" type="string" /> <element name="Company" type="string" /> </choice> <element name="Cash" type="string" /> <element name="Credit" type="string" /> </sequence> </complexType> </element> mix.xsd New Perspectives on XML Tutorial 4

51 Specifying the Occurrences of an Item
To specify that Phone element appears zero to three times <element name= " Phone" type="string" minOccurs="0" maxOccurs="3" /> Ex. of declaring Phone in XML document <Phone> </Phone> <Phone> </Phone> <Phone> </Phone> New Perspectives on XML Tutorial 4

52 Specifying the Occurrences of an Item
To specify sequence of three child elements (FirstName, MiddleName, LastName) can be repeated countless times <element name="Customer"> <complexType> <sequence minOccurs=“1" maxOccurs="unbounded"> <element name="FirstName" type="string" /> <element name="MiddleName" type="string" /> <element name="LastName" type="string" /> </sequence> </complexType> </element> New Perspectives on XML Tutorial 4

53 Declaring an Attribute
Any element that contains an attribute is also a complex type. The syntax to declare an attribute is: <attribute name=“name” type=“type” use=“use” default=“default” fixed=“fixed”/> New Perspectives on XML Tutorial 4

54 Declaring an Attribute
Attributes with Empty Elements <Patient ID=“MR ” Gender=“female” /> Can be declared as <element name=“Patient”> <complexType> <attribute name=“ID” type=“string” /> <attribute name=“Gender” type=“string” default=“female”/> </complexType> </element> New Perspectives on XML Tutorial 4

55 Declaring an Attribute
Attributes with Child Elements <Patient ID=“MR ” Gender=“female” > <Name>Cynthia Dibbs</Name> <Age>58</Age> </Patient> New Perspectives on XML Tutorial 4

56 Declaring an Attribute
Can be declared as <element name=“Patient”> <complexType> <sequence> <element name=“Name” type=“string” /> <element name=“Age” type=“positiveInteger” /> </sequence> <attribute name=“ID” type=“string” /> <attribute name=“Gender” type=“string” default=“female”/> </complexType> </element> New Perspectives on XML Tutorial 4

57 Declaring an Attribute
Attributes with Simple Elements <Patient PID=“MR ”>Cynthia Dibbs</Patient> <element name=“Patient”> <complexType> <simpleContent> <extension base=“string”> <attribute name=“PID” type=“ID” /> </extension> </simpleContent> </complexType> </element> New Perspectives on XML Tutorial 4

58 New Perspectives on XML
Reviews New Perspectives on XML Tutorial 4

59 Attaching a Schema to a Namespace
By attaching a schema to a namespace, each part of the combined document can be associated with a different namespace and can draw upon a different schema for validation. The schemas are combined when the data are combined. New Perspectives on XML Tutorial 4

60 Validating a Combined Document
This figure shows how schemas are combined when the data is combined New Perspectives on XML Tutorial 4

61 Attaching a Schema to a Namespace
The syntax to associate the schema with a namespace is: <prefix:schema xmlns:prefix= XMLSchema xmlns=“URI” targetNamespace=“URI”> New Perspectives on XML Tutorial 4

62 Attaching a Schema to a Namespace
Here, URI is the URI for the schema’s namespace. The schema element has two namespaces. The first is for the W3C’s XML Schema specifications. The second is a namespace for the validation rules declared in this particular schema file. New Perspectives on XML Tutorial 4

63 New Perspectives on XML
Structuring a Schema Schemas can be structured in a number of ways. One structure is called a Russian Doll design. This design involves sets of nested declarations. While this design makes it easy to associate the schema with the instance document, it can be confusing and difficult to maintain. New Perspectives on XML Tutorial 4

64 Russian Doll Design This figure shows a Russian Doll design
New Perspectives on XML Tutorial 4

65 New Perspectives on XML
Structuring a Schema Another schema design is a Flat Catalog Design. In this design, all element declarations are made globally. The structure of the instance document is created by referencing the global element declarations. The syntax is: <element ref=“name”> New Perspectives on XML Tutorial 4

66 Flat Catalog Design This figure shows a Flat Catalog design
New Perspectives on XML Tutorial 4

67 New Perspectives on XML
Named Schema Elements A structure can be named creating a named complex type that can be used elsewhere in the schema. This has the advantage of “storing” the structure so it can be applied to the type attribute. New Perspectives on XML Tutorial 4

68 New Perspectives on XML
Named Model Groups A named model group is a collection of elements. The syntax is: <group name=“name”> element declarations </group> The element declarations must be enclosed within a sequence, all compositor, or choice. New Perspectives on XML Tutorial 4

69 Named Attribute Groups
Attributes can be placed within named attribute groups. The syntax is: <attributeGroup name=“name”> attribute declarations </attributeGroup> This can be useful if you want to use attributes with several different elements in the schema. New Perspectives on XML Tutorial 4

70 Comparing Schema Designs
This figure compares the three schema designs New Perspectives on XML Tutorial 4

71 Deriving New Data Types
Three components are involved in deriving new data types: Value space: the set of values that correspond to the data type. Lexical space: the set of textual representations of the value space. Facets: the properties of the data type that distinguish one data type from another. New Perspectives on XML Tutorial 4

72 New Perspectives on XML
User Derived Data New data types fall into three categories: List: a list of values where each list is derived from a base type. Union: the combination of two or more data types. Restriction: a limit placed on the facet of a base type. New Perspectives on XML Tutorial 4

73 Deriving a Restricted Data Type
The most common way to derive a new data type is to restrict the properties of a base type. XML Schema provides twelve constraining facets for this purpose. New Perspectives on XML Tutorial 4

74 Constraining Facets This figure shows the 12 constraining facets
New Perspectives on XML Tutorial 4

75 New Perspectives on XML
The Patterns Facet A pattern can be created with a formatted text string called a regular expression or regex. The basic unit of a regex is called an atom. It can be a single character, a group of characters, or another regex enclosed in parenthesis. A quantifier can be added to the atom to specify the number of occurrences for a particular character. New Perspectives on XML Tutorial 4

76 Pattern Quantifiers This figure shows pattern quantifiers
New Perspectives on XML Tutorial 4

77 New Perspectives on XML
Annotating a Schema It is helpful to include comments about a created schema for other XML developers. An annotation element stores information about the schema. The syntax is: <annotation> <documentation> documentation comments </documentation> <appinfo> application information </appinfo> </annotation> New Perspectives on XML Tutorial 4


Download ppt "Working with Namespaces and Schemas"

Similar presentations


Ads by Google