An Introduction to XML Based on the W3C XML Recommendations.

32
An Introduction to XML Based on the W3C XML Recommendations

Transcript of An Introduction to XML Based on the W3C XML Recommendations.

Page 1: An Introduction to XML Based on the W3C XML Recommendations.

An Introduction to XML

Based on the W3C XML Recommendations

Page 2: An Introduction to XML Based on the W3C XML Recommendations.

Agenda• XML Syntax

– XML vs HTML

– Data Types – Elements, Attributes

– White Space – Optional, Mandatory, & Preserved

– Empty Content

– Valid vs Well Formed

• XML Schema– Used to Validate XML data

– Before XML Schema – DTD’s

– Simple Types vs Complex Types

– Restricting data with Regular Expressions

• Namespaces – Avoiding Tag Name Conflicts

• XML Tools– XML Spy and Other Tools

• Corresponding Sample XML, XSD, DTD, XSL, and XHTML files

• XML Resources on the web– http://www.w3schools.com - an excellent site

– http://www.xml.com

– http://www.w3.org

Page 3: An Introduction to XML Based on the W3C XML Recommendations.

XML vs HTML

As you can see, XML looks similar to HTML.

<?xml version="1.0“?>

<root>

<child>

<subchild attribute=“metadata”>Data</subchild>

</child>

</root>

Page 4: An Introduction to XML Based on the W3C XML Recommendations.

XML vs HTML

• Unlike HMTL:– XML is Case Sensitive

– Tags must be properly nested

– All start tags must have a corresponding end tag to close the element

– All XML documents must have a root element

– Attrbutes must use quotes (can be single or double)

– White space between tags is preserved

Page 5: An Introduction to XML Based on the W3C XML Recommendations.

XML vs HTML

• Special Characters– Handled the same way– For Example:

• < > ‘ “ &

• &lt; &gt; &apos; &quot; &amp;

Page 6: An Introduction to XML Based on the W3C XML Recommendations.

Elements

• XML Elements are extensible and they have parent/child relationships.

• XML elements must follow these naming rules:– Names can contain letters, numbers, underscores, periods, colons,

and hyphens (last three are not normally used in element names)

– Names must not start with a number or punctuation character

– Names must not start with the letters xml (or XML or Xml )

– Names cannot contain spaces

Page 7: An Introduction to XML Based on the W3C XML Recommendations.

Attributes

• Attributes are normally used to store metadata, data about data, and the real data is stored in elements between the start and end tags.

• Single or Double quotes can be used.

Page 8: An Introduction to XML Based on the W3C XML Recommendations.

White Space

• White Space Includes:– Carrage returns, Line feeds, Spaces, Horizontal Tabs

• Optional White Space – White space is optional in XML files

• Mandatory White Space – White Space must occur when using attributes

• Preserved White Space – Between start/end tag pairs

Page 9: An Introduction to XML Based on the W3C XML Recommendations.

Optional White Space

Valid<?xml version="1.0"?>

< root >

< child >

<subchild>Data</subchild>

</child>

</root>

Valid<?xml version="1.0"?><root><child><subchild>Data</subchild></child>

</root>

Page 10: An Introduction to XML Based on the W3C XML Recommendations.

Mandatory White Space

Valid

<?xml version="1.0"?><root> <child

attribute=“metadata”></root>

Invalid

<?xml version="1.0"?><root>

<childattribute=“metadata”>

</root>

Must have white space here

Page 11: An Introduction to XML Based on the W3C XML Recommendations.

Preserved White Space

Valid

<?xml version="1.0"?>

<root>

<child>

<subchild>White space between

start/end tag pairs will be preserved</subchild>

</child>

</root>

Page 12: An Introduction to XML Based on the W3C XML Recommendations.

Empty Content

• IF no data is “held” between a start/ end tag pair, two formats may be used:

<tag></tag>

<tag/>

• The second format is called an Empty Tag (aka Null tag) and commonly used when only an attribute is needed:

<tag attribute=“data”/>

Page 13: An Introduction to XML Based on the W3C XML Recommendations.

Valid vs Well Formed

• XML data is defined and validated most commonly by:– XML Schemas– DTD’s (Document Type Definition)

• XML data is well formed if it follows the W3C XML Recommendation, Version 1.0– This includes:

• The start/end tags matching up• White space used properly

• NOTE: XML Spy does both checks

Page 14: An Introduction to XML Based on the W3C XML Recommendations.

XML Schema

• Used to Define and Validate XML

– In order for the XML file to be validated by a schema, the schema’s location is referenced as an attribute of the root element

<FirmOrder … schemaLocation="http://www.telcordia.com/SGG/FO

C:\13.0\Documentation\xsd\firmOrder.xsd"/>

Page 15: An Introduction to XML Based on the W3C XML Recommendations.

XML Schema• Before XML Schema, most XML

documents were validated against a DTD

<?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.sample.org/xml" xmlns="http://www.sample.org/xml" elementFormDefault="qualified"> <xsd:element name=“File"> <xsd:complexType> <xsd:sequence> <xsd:element ref=“Record" minOccurs=“0" maxOccurs=“unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=“Record"> <xsd:complexType> <xsd:sequence> <xsd:element ref=“Fill minOccurs=“1" maxOccurs=“1”/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=“Fill" type="xsd:string"/></xsd:schema>

<!ELEMENT File (Record)*>

<!ELEMENT Record (Fill)>

<!ELEMENT Fill (#PCDATA)>DTD XML

Schema

Mercator Type Tree

Page 16: An Introduction to XML Based on the W3C XML Recommendations.

XML Schema

• Element Data Types– XML Schema’s Simple Types

• Similar to Items in Mercator• 44 Simple types built-in XML Schema

– XML Schema’s Complex Types• Similar to Groups in Mercator• 36 Complex types built-in XML Schema

– XML Schema’s Attributes• Similar to the Properties of Items and Groups in

Mercator

Page 17: An Introduction to XML Based on the W3C XML Recommendations.

XML Schema

• Simple Types can be restricted using Regular Expressions:

<xsd:simpleType name="alphaString">

<xsd:restriction base="xsd:string">

<xsd:pattern value="([A-Z]|[a-z]|[ ])*"/>

</xsd:restriction>

</xsd:simpleType>

Page 18: An Introduction to XML Based on the W3C XML Recommendations.

Namespaces

• XML Namespaces provide a method to avoid element name conflicts.

– Since element names are not predefined as in HTML, often times a name conflict can occur when combining two different documents using the same name for two different elements

Page 19: An Introduction to XML Based on the W3C XML Recommendations.

Namespaces, cont.

• If the following two XML documents were added together, there would be an element name conflict because both documents contain a <table> element with different content and definition.

<table> <name>Tea Table</name> <width>80</width> <length>120</length></table>

<table> <tr> <td>Apples</td> <td>Bananas</td> </tr></table>

Page 20: An Introduction to XML Based on the W3C XML Recommendations.

Solving Name Conflicts using a Prefix

<h:table>

<h:tr>

<h:td>Apples</h:td>

<h:td>Bananas</h:td>

</h:tr>

</h:table>

<f:table>

<f:name>African Coffee Table</f:name>

<f:width>80</f:width>

<f:length>120</f:length>

</f:table>

Page 21: An Introduction to XML Based on the W3C XML Recommendations.

Using Namespaces

<h:table xmlns:h="http://www.w3.org/TR/html4/">

<h:tr>

<h:td>Apples</h:td>

<h:td>Bananas</h:td>

</h:tr>

</h:table>

<f:table xmlns:f="http://www.w3schools.com/furniture">

<f:name>African Coffee Table</f:name>

<f:width>80</f:width>

<f:length>120</f:length>

</f:table>

Page 22: An Introduction to XML Based on the W3C XML Recommendations.

Namespaces

• URI’s are used as the namespace name– Most commonly used URI is a URL– URL’s by definition are unique to companies– The URL does NOT need to be valid

• They are used for creating uniqueness not validating your tags

• Most companies put “help” documentation about their namespace, tags, and/or XML Schemas

Page 23: An Introduction to XML Based on the W3C XML Recommendations.

XML Samples

• The next five slides have different types of XML files that correspond to each other:– XML Data Document– XML Schema– DTD (these are not written in XML)– XSL – style sheet

Page 24: An Introduction to XML Based on the W3C XML Recommendations.

XML Data Sample

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="xmlxsl.xsl"?>

<root>

<child>

<name>Optional name tag used in this child tag</name>

<description>First description start/end tag pair in child tag</description>

</child>

<child>

<name>Optional name tag used in this child tag</name>

<description>First description start/end tag pair in child tag</description>

<description>Second description start/end tag pair in child tag</description>

</child>

</root>

Page 25: An Introduction to XML Based on the W3C XML Recommendations.

XML Schema Sample<?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.sample.org/xml" xmlns="http://www.sample.org/xml" elementFormDefault="qualified"> <xsd:element name=“root"> <xsd:complexType> <xsd:sequence> <xsd:element ref=“child" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="child"> <xsd:complexType> <xsd:sequence> <xsd:element ref="name" minOccurs ="0"/> <xsd:element ref="description" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="name" type="xsd:string"/> <xsd:element name="description" type="xsd:string"/></xsd:schema>

Page 26: An Introduction to XML Based on the W3C XML Recommendations.

XML DTD Sample

<!ELEMENT root (child)*>

<!ELEMENT child (name?, description+)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT description (#PCDATA)>

Page 27: An Introduction to XML Based on the W3C XML Recommendations.

Style Sheet (XSL) Sample<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>

<body>

<h2>XHTML Sample</h2>

<table border="1">

<tr bgcolor="gray">

<th>Name</th>

<th>Description</th>

</tr>

<xsl:for-each select="root/child">

<tr>

<td><xsl:value-of select="name" /></td>

<td><xsl:value-of select="description" /></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Page 28: An Introduction to XML Based on the W3C XML Recommendations.

XHTML Generated<html>

<body>

<h2>XHTML Sample</h2>

<table border="1">

<tr bgcolor="gray">

<th>Name</th>

<th>Description</th>

</tr>

<tr>

<td>Optional name tag used in this child tag</td>

<td>First description start/end tag pair in child tag</td>

</tr>

<tr>

<td>Optional name tag used in this child tag</td>

<td>First description start/end tag pair in child tag</td>

</tr>

</table>

</body>

</html>

Page 29: An Introduction to XML Based on the W3C XML Recommendations.

XML Spy

• Accomplishes several XML tasks including:– Editing a variety of XML data graphically– Allowing multiple views including:

• Text, browser, grid, structure (schema design),

– Creates test data from XML Schemas– Generates XML Schemas from XML files– Validates data– Checks data for Well-formedness

Page 30: An Introduction to XML Based on the W3C XML Recommendations.

Other Tools

• Internet Explorer– Displays XML data using a default style sheet– Checks XML for Well-formedness and displays

error message for troubleshooting

• UltraEdit

Page 31: An Introduction to XML Based on the W3C XML Recommendations.

XML Resources on the web

• They are hundreds of XML resources on the web.– http://www.w3schools.com (an excellent site)

– http://www.xml.com

– http://www.w3.org

• The easiest was to find data about a specific XML topic or syntax is to type it into google.com

Page 32: An Introduction to XML Based on the W3C XML Recommendations.

Contact Us

Barry DeBruin

debruinconsulting.com

919-434-5399