ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context.
Post on 22-Dec-2015
225 Views
Preview:
Transcript
ACG 4401
XML SchemasXML NamespacesXLink
+The XML Foundation
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
Xlink (will discuss briefly, but its an important feature)
Namespaces – qualify elements & attributes Differentiate & associate them with a URI
3+XML Schema Language
Language (Vocabulary) used to create Schema Documents
Schema Definition: “provide a means for defining the structure, content and
semantics of XML documents.” (W3C) Well-formed Document Defines structure and contents of Instance Document
Similar to an ER-Diagram for databases Defines Each Element and Attribute Its Structure
Includes Business Rules including: Cardinalities
Used to Validate Instance Document
Means Instance Document conforms to Schema Rules
+XML Schema
.xsd extension But won’t open in IE so use .xml if using that browser
Defines each attribute and element
+Vocabularies & Schemas
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
6+Namespaces
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)
+ Vocabularies and Namespaces
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: “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 [tag 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>
+
Element Types
How to Describe Elements in a Schema
8
9+Types of Elements 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>
+Simple Element Definition
Declare Name
Declare Type
<ID>abc12345</ID>
<xs:element name=“ID” type=“xs:string”/>
Type= Defines the data type:
string Integer date decimal other types
+Complex Element (Parent)
Declares Name
Declares type
Declares Structure
<Instructor>
<Name>Dr. Hornik</Name>
</Instructor>
12+Complex Element (Parent) xml
<xs:element name=”Instructor">
<xs:complexType>
<xs:sequence>
<xs:element name=“Name” type=“string”/>
</xs:sequence>
</xs:complexType>
</xs:element>
+Complex Element (attribute)
Declare Name
Declare Type
Define element and attribute(s)
For example: <cbc:PriceAmount currencyID="USD">730.55</cbc:PriceAmount>
14+Complex (Attribute) xml
<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>
+
Creating Schema from Instance DocumentPizzaOrders
15
+Create a Schema from a non-vocabulary instance document
Identify types of elements Simple Complex – Parent Complex – Attribute
Create Prolog
Create Root element
Work down from 1st element to last
17+Identify Element Types
PizzaOrder.xml
+
Schema Document
Root Element
18
+UBL Schemas
Schemas for each document type
Common Basic Components (all child elements) Defines Simple Elements Defines Complex (attribute) Elements Prefix: cbc (Namespace prefix)
Common Aggregate Components Defines Complex (Parent) Elements Prefix: cac (Namespace prefix)
20+Root Element of Schema Document
Root element is used to declare namespace(s)
<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”>
xmlns:xs defines prefix to use for namespace
xs: = namespace prefix
“http:www.w3.org/2001/XMLSchema” location of Namespace, where the dictionary is
Prefix is used before each tag xs:tagname
+Creating UBL Document Schemas
1. Declare NameSpaces and qualifiers
2. Import necessary Schemas
3. Define Root Element (from Instance Document)
1. Reference Reusable data components
2. Declare Cardinalities
+Declaring a Namespace (in the UBL Instance document)
<Invoice xmlns="UBLInvoiceDocument"
xmlns:cbc="UBLCommonBasicComponents"
xmlns:cac="UBLCommonAggregateComponents">
Default Namespace – a namespace without a prefix Since UBLInvoiceDocument does NOT have a prefix any element in
the instance document without a prefix relates to this namespace.
UBL Order Instance with namespaces
+ 1. UBL Namespace Declaration in Root Element of Schema Document
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="UBLInvoiceDocument"
xmlns:cbc="UBLCommonBasicComponents"
xmlns:cac="UBLCommonAggregateComponents"
elementFormDefault="qualified"
attributeFormDefault="unqualified”
targetNamespace="UBLInvoiceDocument">
+Namespace Clarification
targetNamespace="UBLInvoiceDocument“ The schema being created/used is applied to the
UBLInvoiceDocument namespace
elementFormDefault="qualified“ Element names will use a namespace prefix
CAC: CBC:
attributeFormDefault="unqualified“ Attribute names will not use a namespace prefix
+2. UBL Import
<xs:import namespace="UBLCommonBasicComponents"
schemaLocation="http://www.skipwhite.com/ag2015/UBLCommonBasicComponentsSchema.xsd"/>
<xs:import namespace="UBLCommonAggregateComponents"
schemaLocation="http://www.skipwhite.com/ag2015/UBLCommonAggregateComponentsSchema.xsd"/>
+3. UBL Root Element (Catalogue)
<xs:element name=”Invoice">
<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:InvoiceLine" minOccurs=”1” maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Put it all together: The Entire Schema
27+UBL
All UBL Instance documents are created using elements defined in Schemas (CBC or CAC).
All UBL document schema’s defines the content and structure of the UBL Instance document For any particular company What is that companies rules related to an Order, Invoice,
etc. UBL document
+Validating XML
Ensure that Instance Document Follows business rules Data types are correct Data is properly sequenced
+
Schemas and VocabulariesUBL Vs. XBRL
29
30+UBL
Schema defines: Elements Attributes, and UBL Documents (i.e. Order, Invoice, DespatchAdvice, etc.)
31+XBRL
Schema Defines: Elements Attributes Structure of XBRL documents Taxonomies
Commercial and Industrial Banking and Savings IFRS Management Discussion and Analysis Report etc.
+
XLink
32
+XML Linking Language
Xlink Another XML foundation language Allows attributes of an element in an XML document to
establish links with other documents/elements Simple: HTML type links (unidirectional/outbound) Extended: More complex Relationship links
(multidirectional) describes relationships between elements
34+Simple links
Unidirectional and always Outbound From element within Instance document to an outside
resource
Link to list of approved Vendors
<InventoryItem xlink:type”simple” xlink:href=“http://ApprovedVendorList.xml”/>
+ 35
Extended Links
Attributes: xlink:type=“extended”
Used in Parent element Indicates child
elements will participate in the linking relationship
Xlink:type=“locator” Remote resource In Child element
Xlink:href=“http://….” In Child Element
<OrdeReconciliation xlink:type=“extended”>
<Purchase id=“12345” xlink:type=“locator” xlink:href=
http://PurchaseOrders.xml/>
<Receiving id=“34567” xlink:type=“locator” xlink:href=
http://ReceivingRpts.xml/>
<Voucher id=“456789” xlink:type=“locator” xlink:href=
http://Vouchers.xml/>
</Orders>
top related