35
ACG 4401 XML Schemas XML Namespaces XLink

ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

Embed Size (px)

Citation preview

Page 1: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

ACG 4401

XML SchemasXML NamespacesXLink

Page 2: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 3: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

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

Page 4: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+XML Schema

.xsd extension But won’t open in IE so use .xml if using that browser

Defines each attribute and element

Page 5: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 6: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

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)

Page 7: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+ 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>

Page 8: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+

Element Types

How to Describe Elements in a Schema

8

Page 9: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

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>

Page 10: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 11: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+Complex Element (Parent)

Declares Name

Declares type

Declares Structure

<Instructor>

<Name>Dr. Hornik</Name>

</Instructor>

Page 12: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

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>

Page 13: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+Complex Element (attribute)

Declare Name

Declare Type

Define element and attribute(s)

For example: <cbc:PriceAmount currencyID="USD">730.55</cbc:PriceAmount>

Page 14: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

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>

Page 15: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+

Creating Schema from Instance DocumentPizzaOrders

15

Page 16: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 18: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+

Schema Document

Root Element

18

Page 19: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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)

Page 20: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

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

Page 21: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 22: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 23: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+ 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">

Page 24: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 25: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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"/>

Page 26: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 27: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

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

Page 28: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+Validating XML

Ensure that Instance Document Follows business rules Data types are correct Data is properly sequenced

Page 29: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+

Schemas and VocabulariesUBL Vs. XBRL

29

Page 30: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

30+UBL

Schema defines: Elements Attributes, and UBL Documents (i.e. Order, Invoice, DespatchAdvice, etc.)

Page 31: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

31+XBRL

Schema Defines: Elements Attributes Structure of XBRL documents Taxonomies

Commercial and Industrial Banking and Savings IFRS Management Discussion and Analysis Report etc.

Page 32: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+

XLink

32

Page 33: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+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

Page 34: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

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”/>

Page 35: ACG 4401 XML Schemas XML Namespaces XLink. + The XML Foundation Many participants – an extended family! XML Instance documents – carry data in context

+ 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>