Upload
emery-hopkins
View
250
Download
0
Tags:
Embed Size (px)
Citation preview
XML
• eXtensible – add to language.
• Markup – delimit info using tags.
• Language – a way to express info.
XML Includes …
XForms Model
XHTML
XPath
XSLTXSL-FO
XFormsProcessor
XSLParser
RenderingAgent
XSD
HTML
Marked up text
An XML Document …
• A text document.
• Stores data.
• Data items are delimited using tags.
• Hierarchical structure.
-
<?xml version="1.0"?><Customers>
<Customer><Id>5003</Id><CName>Jane</CName><Transaction>
<TDate>2003-01-01</TDate><Amt>-27.85</Amt>
</Transaction><Transaction>
<TDate>2003-01-07</TDate><Amt>49.50</Amt>
</Transaction></Customer>
</Customers>
Tags:• Delimit data.• Show meaning.• You make tags!
Data:• Rich data types.• Constraints.
Well Formed XML
1. All data items are between tags.
2. Closing tags start with /.
3. Tags are case sensitive.4. No spaces or symbols in tags.
(Data may contain spaces and some symbols.)
5. Tags balance.
Tags and Data
<?xml version="1.0"?><Customers>
<Customer><Id>5003</Id><CName>Jane</CName><Transaction>
<TDate>2003-01-01</TDate><Amt>-27.85</Amt>
</Transaction></Customer>
</Customers>
Well Formed?
<Cost>Homer Simpson</Cost>
<Cost>123.45<Cost>
<Cost>123.45</cost>
<Cost>123.45</Cost>
<Cost><Quantity>123.45</Cost>15</Quantity>
<Cost>123.45</Cost><Quantity>15</Quantity>
XML Document Structure
Transaction
TDateAmt
1/1/03
-27.95
Transaction
TDateAmt
1/7/03
49.50
Customer
IdCName
5004
Tom
Customer
IdCName
5003
Jane
Customers
Transaction
TDateAmt
1/3/03
58.85
<?xml version="1.0"?><Customers>
<Customer><Id>5003</Id><CName>Jane</CName><Transaction>
<TDate>2003-01-01</TDate><Amt>-27.85</Amt>
</Transaction><Transaction>
<TDate>2003-01-07</TDate><Amt>49.50</Amt>
</Transaction></Customer><Customer>
<Id>5004</Id><CName>Tom</CName><Transaction>
<TDate>2003-03-03</TDate><Amt>58.85</Amt>
</Transaction></Customer>
</Customers>
Hierarchy of Nodes
Transaction
TDateAmt
1/1/03
-27.95
Transaction
TDateAmt
1/7/03
49.50
Customer
IdCName
5004
Tom
Customer
IdCName
5003
Jane
Transaction
TDateAmt
1/3/03
58.85
Customers
/ Root Node
Document Elementor Document Node
Node or Complex Element
(Simple) Element
Key to Understanding?
Meaningful, descriptive tag names!
<z>103.95</z>
<Price>103.95</Price>
<ListPrice>103.95</ListPrice>
<SalesPrice>103.95</SalesPrice>
103.95
An XML Schema …
• Defines the structure of an XML document.– Nodes.– Hierarchy.
• Defines the elements in each node.– Tag.– Data type.– Constraints.
XML Schema
XMLDocument
Valid XML Document
XML Schema
XMLDocument
Well formed.
XML document conforms to structure defined in XML schema.
Defining an XML Schema
Identify Data Requirements
Specify Tags
Specify Structure
Agree on Definitions
Some Major XML Standards
EFT DirectDeposit
Open Financial Exchange (OFX)
EDI
XML/EDI andelectronic businessusing XML (ebXML)
eXtensible BusinessReporting Language (XBRL)
FinancialReporting
Tax Reporting
IRS e-file Standards
<?xml version="1.0"?><Customers>
<Customer><Id>5003</Id><CName>Jane</CName><Transaction>
<TDate>2003-01-01</TDate><Amt>-27.85</Amt>
</Transaction><Transaction>
<TDate>2003-01-07</TDate><Amt>49.50</Amt>
</Transaction></Customer><Customer>
<Id>5004</Id><CName>Tom</CName><Transaction>
<TDate>2003-03-03</TDate><Amt>58.85</Amt>
</Transaction></Customer>
</Customers>
Transaction
TDateAmt
1/1/03
-27.95
Transaction
TDateAmt
1/7/03
49.50
Customer
IdCName
5004Tom
Customer
IdCName
5003Jane
Transaction
TDateAmt
1/3/0358.85
Customers
<?xml version = "1.0"?><xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<xsd:element name = "Customers"> <xsd:complexType> <xsd:sequence>
<xsd:element ref = "Customer" maxOccurs = "unbounded"/></xsd:sequence>
</xsd:complexType> </xsd:element>
Transaction
TDateAmt
1/1/03
-27.95
Transaction
TDateAmt
1/7/03
49.50
Customer
IdCName
5004Tom
Customer
IdCName
5003Jane
Transaction
TDateAmt
1/3/0358.85
Customers
…
<xsd:element name = "Customer"><xsd:complexType>
<xsd:sequence> <xsd:element name = "Id" type = "xsd:string"/> <xsd:element name = "CName" type = "xsd:string"/>
<xsd:element ref = "Transaction" maxOccurs = "unbounded"/></xsd:sequence>
</xsd:complexType></xsd:element>
Transaction
TDateAmt
1/1/03
-27.95
Transaction
TDateAmt
1/7/03
49.50
Customer
IdCName
5004Tom
Customer
IdCName
5003Jane
Transaction
TDateAmt
1/3/0358.85
Customers
…
<xsd:element name = "Transaction"><xsd:complexType>
<xsd:sequence> <xsd:element name = "TDate" type = "xsd:date"/>
<xsd:element name = "Amt" type = "xsd:decimal"/></xsd:sequence>
</xsd:complexType> </xsd:element>
</xsd:schema>
Transaction
TDateAmt
1/1/03
-27.95
Transaction
TDateAmt
1/7/03
49.50
Customer
IdCName
5004Tom
Customer
IdCName
5003Jane
Transaction
TDateAmt
1/3/0358.85
Customers
<?xml version = "1.0"?><xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <xsd:element name = "Customers"> <xsd:complexType> <xsd:sequence>
<xsd:element ref = "Customer" maxOccurs = "unbounded"/></xsd:sequence>
</xsd:complexType> </xsd:element> <xsd:element name = "Customer">
<xsd:complexType> <xsd:sequence>
<xsd:element name = "Id" type = "xsd:string"/> <xsd:element name = "CName" type = "xsd:string"/>
<xsd:element ref = "Transaction" maxOccurs = "unbounded"/></xsd:sequence>
</xsd:complexType></xsd:element>
<xsd:element name = "Transaction"><xsd:complexType>
<xsd:sequence> <xsd:element name = "TDate" type = "xsd:date"/>
<xsd:element name = "Amt" type = "xsd:decimal"/></xsd:sequence>
</xsd:complexType> </xsd:element></xsd:schema>
Validating XML Documents
• Use software or web tools.
– Topologi Schematron Validator.• www.topologi.com
– GotDotNet Schema Validator.• http://apps.gotdotnet.com/xmltools/xsdvalidator/
An XSL Stylesheet …
• Gets and filters nodes in an XML document.
• Transforms nodes.
• Formats output.
XSL Stylesheet “Languages”
XML Path
XPath: gets nodes using paths and filtering patterns.
XSL Transformations
XSLT: transforms a document tree into a new document tree.
XSL-Formatting Objects
XSL-FO: describes how output looks. (HTML on steroids!)
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/Customers"><html>
<body><h1>Customer Information</h1><xsl:apply-templates select="Customer" />
</body></html>
</xsl:template><xsl:template match="Customer">
<b>Id: </b> <xsl:value-of select="Id" /><br /><b>Name: </b> <xsl:value-of select="CName" /><br /><xsl:apply-templates select="Transaction" /><br /><hr /><br />
</xsl:template><xsl:template match="Transaction">
<b>Date: </b> <xsl:value-of select="TDate" /><b>Amount: </b> <xsl:value-of select="Amt" /><br />
</xsl:template></xsl:stylesheet>
Transaction
TDateAmt
1/1/03
-27.95
Transaction
TDateAmt
1/7/03
49.50
Customer
IdCName
5004Tom
Customer
IdCName
5003Jane
Transaction
TDateAmt
1/3/0358.85
Customers
Alphabet Soupof Xtechs
XML Schema
XMLDocument
XForms
XForms Model
XSL Stylesheet
XHTMLMarked up text XPath
XSLTXSL-FO
XFormsProcessor
Editor &Validator
XSLParser
RenderingAgent
XSD
Languages & Formats
Software
HTML