ACG 4401
+
Many participants – an extended family!
XML Instance documents – carry data in context
Each must be parsed into its component parts
XML Schemas – define the rules a class of documents must follow
Can be used to validate documents & contents
XSLT – provide processing instructions
Can be used to process XML documents
Namespaces – qualify elements & attributes
Differentiate & associate them with a URI
Xlink
+
Language used to create Schema Documents
Schema
Used to define the structure and content of Instance documents
Well-formatted XML document
Definition: “provide a means for defining the structure, content and semantics of XML documents.” ( W3C )
Defines structure and contents of Instance Document
Similar to an ER-Diagram for databases
Defines Each Element and Attribute
Its Structure
Includes Business Rules
Cardinalities
Used to Validate Instance Document
Means Instance Document conforms to Schema Rules
+
.xsd extension
But won’t open in IE so use .xml if using that browser
Defines each attribute and element
+
XBRL & UBL are vocabularies
XBRL for Financial Reporting
UBL for Business Documents
Vocabularies are designed using
Agreed upon element names
Agreed upon element types
Agreed upon element sequence/structure
Defined by Schemas
+
Each XML Vocabulary is associated with a unique
NameSpace
A unique identifier (think, primary key)
Universal Resource Identifier (URI)
Local Name (e.g. TeeTimeResevations.xml)
URL (http://www……)
Used to prevent naming collisions (more later)
6
+
Namespace
A Unique Identifier
Unique Prefix refers to URI
Points to where information in an XML Document can be found. (URI)
Attribute of Root Element
Definition: “XML namespace: In XML, a namespace is a collection of names, identified by a URI reference, that are used in XML documents as element types and attribute names. In order for XML documents to be able to use elements and attributes that have the same name but come from different sources, there must be a way to differentiate between the markup elements that come from the different sources.” ( Webopeida ) ( Technical
Information from W3.org)
Used to preclude naming collisions
Method for distinguishing between the same element name for different elements
<inv:id>10001</inv:id> ...
<employee:id>18897</employee:id>
+
Simple
contain only data
<SalesOrderID>98765</SalesOrderID>
Complex
contain other elements (i.e. Root & Parent)
<PartyName>
<Name>Bicycles Online, Inc.</Name>
</PartyName> contain attributes
<PriceAmount currencyID="USD">730.55</PriceAmount>
8
+
Declare Name
Declare Type
<xs:element name=“ID” type=“xs:string”/>
Type=
Defines the data type:
string
Integer date decimal other types
+
Declares Name
Declares type
Declares Structure
+
11
+
<xs:element name="Party">
<xs:complexType>
<xs:sequence>
<xs:element ref="PartyName" minOccurs="1" maxOccurs="1" />
<xs:element ref="PostalAddress" minOccurs="1" maxOccurs="1" />
<xs:element ref="Contact" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
12
+
Declare Name
Declare Type
Define element and attribute(s)
For example:
<cbc:PriceAmount currencyID="USD">730.55</cbc:PriceAmount>
+
<xs:element name=" PriceAmount ">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="currencyID" type="xs:string”use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
14
+
Identify types of elements
Simple
Complex – Parent
Complex – Attribute
Create Prolog
Create Root element
Work down from 1 st element to last
+
Root element is used to declare namespace(s)
<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”>
xs: = namespace prefix
xmlns:xs defines prefix to use for namespace
“http:www.w3.org/2001/XMLSchema” location of Namespace, where the dictionary is
Prefix is used before each tag xs:tagname
16
+
PizzaOrders
17
+
PizzaOrder.xml
18
+
Schemas for each document type
Common Basic Components
Defines Simple Elements
Defines Complex (attribute) Elements
Prefix: cbc (Namespace prefix)
Common Aggregate Components
Defines Complex (Parent) Elements
Prefix: cac (Namespace prefix)
+
1.
2.
3.
Declare NameSpaces and qualifiers
Import necessary Schemas
Define Root Element
1.
Reference Reusable data components
2.
Declare Cardinalities
+
<Catalogue xmlns="UBLCatalogueDocument" xmlns: cbc ="UBLCommonBasicComponents" xmlns: cac ="UBLCommonAggregateComponents">
Since UBLCatalogueDocument does NOT have a prefix any element in the instance document without a prefix relates to this namespace.
UBL Catalogue Instance with namespaces
+
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs ="http://www.w3.org/2001/XMLSchema" targetNamespace="UBLCatalogueDocument" xmlns ="UBLCatalogueDocument" xmlns:cbc ="UBLCommonBasicComponents" xmlns:cac ="UBLCommonAggregateComponents" elementFormDefault ="qualified" attributeFormDefault ="unqualified">
+
targetNamespace ="UBLCatalogueDocument“
The schema being created/used is applied to the
UBLCatalogueDocument namespace
elementFormDefault ="qualified“
Element names will use a namespace prefix
CAC:
CBC:
attributeFormDefault ="unqualified“
Attribute names will not use a namespace prefix
+
<xs:import namespace ="UBLCommonBasicComponents" schemaLocation ="http://www.buec.udel.edu/whitec/UBL
CommonBasicComponents/UBLCommonBasicComponent sSchema.xsd"/>
<xs:import namespace ="UBLCommonAggregateComponents" schemaLocation ="http://www.buec.udel.edu/whitec/UBL
CommonAggregateComponents/UBLCommonAggregate
ComponentsSchema.xsd"/>
+
<xs:element name="Catalogue">
<xs:complexType>
<xs:sequence>
<xs:element ref="cbc:ID" minOccurs="1" maxOccurs="1" />
<xs:element ref="cbc:Name" minOccurs="1" maxOccurs="1"/>
<xs:element ref="cbc:IssueDate" minOccurs="1" maxOccurs="1"/>
<xs:element ref="cac:ProviderParty" minOccurs="1" maxOccurs="1"/>
<xs:element ref="cac:ReceiverParty" minOccurs="1" maxOccurs="1"/>
<xs:element ref="cac:CatalogueLine" minOccurs=”1” maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
Put it all together: The Entire Schema
+
Ensure that Instance Document
Follows business rules
Data types are correct
Data is properly sequenced
+
XLink
Uses attributes to describe relationships between elements
Simple: HTML type links
Extended: More complex Relationship links
+
Unidirectional and always Outbound
From element within Instance document to an outside resource
Link to list of approved Vendor
<InventoryItem xlink:type”simple” xlink:href=“http://….”/>
28
+
Attributes:
xlink:type=“extended”
Used in Parent element
Xlink:type=“locator”
Remote resource
In Child element
Xlink:href=“http://….”
In Child Element
<Orders xlink:type=“extended”>
<Purchase id=“12345” xlink:type=“locator” xlink:href= http://PurchaseOrders.x
ml />
<Receiving id=“34567” xlink:type=“locator” xlink:href= http://ReceivingRpts.xml
/>
<Voucher id=“456789” xlink:type=“locator” xlink:href= http://Vouchers.xml
/>
</Orders>
29