xbrl_ch3

advertisement
ACG 4401
XML Schemas
XML Namespaces
XLink
+
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


Points to where information in an XML Document can be found. (URI)

Attribute of Root Element


Unique Prefix refers to URI
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>
+
8
Element Types
How to Describe Elements in a Schema
+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>
9
+
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>
+
15
Creating Schema from
Instance Document
PizzaOrders
+
Create a Schema from a nonvocabulary 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
+
18
Schema Document
Root Element
+
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“


elementFormDefault="qualified“


The schema being created/used is applied to the
UBLInvoiceDocument namespace
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/UBL
CommonBasicComponentsSchema.xsd"/>
<xs:import
namespace="UBLCommonAggregateComponents"
schemaLocation="http://www.skipwhite.com/ag2015/UBL
CommonAggregateComponentsSchema.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
+
29
Schemas and
Vocabularies
UBL Vs. XBRL
+
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.
+
32
XLink
+
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>
Download