250 likes | 347 Views
XML. by Jon Pearce. What is XML?. XML = eXstensible Markup Language = a meta language for defining markup languages. Examples:
E N D
XML by Jon Pearce
What is XML? XML = eXstensible Markup Language = a meta language for defining markup languages. Examples: MathML, SVG (Scalable Vector Graphics), WML (Wireless Markup Language), XBRL (Extensible Business Reporting Language), XUL (Extensible User Interface Language), PDML (Product Data Markul Language), CML (Chemical ML), VoiceXML, VML (Vector ML), cXML (Commerce XML), tpaML (Traqding partner agreement XML), SMBXML (Small to Medium Business XML), FinXML (Financial XML), SOAP, XHTML, OWL
XML History • Standard Generalized Markup Language • Invented in 1980s for publishing industry • Markup meta language • HTML is an SGML language • Ancestor of XML
Uses of XML • Data Storage • Object Serialization • Presentation Independent • Language Independent • Application Initialization • Message Passing • Between Tiers • Data-Business-Presentation-Client • SOAP and Web Services
An XML Document Contains: • A Prolog • Elements <tag> content </tag> • Comments <!-- don't read this --> • CDATA Sections <![CDATA[ pre-formatted text]]> • Processing Instructions (PIs) <? do it ?>
Format of an XML Document <?xml version="1.0"?><root> ELEMENT ELEMENT ...</root>
A Document Prolog Contains: • XML Declaration <?xml version="1.0" ?> • DTD (optional) • Style Sheet (optional) • etc. <?xml version="1.0"?><!DOCTYPE addresses SYSTEM "addresses.dtd"><?xml-stylesheet type="text/xsl" href="addresses1.xsl"?>
An XML Element Contains: • <TAG attributes> content </TAG> <DATE status="cancelled"> 09/01/2002</DATE> • An empty element: <TAG attributes />
Example: book.xml <?xml version="1.0"?><addresses> PERSON PERSON PERSON ...</addresses>
A Person Element (1) <person> NAME ADDRESS PHONE</person>
A Person Element (2) <person> <name> <first> Joe </first> <last> Smith </last> </name> <address> <street> 123 Sesame St </street> <city> New York </city> <state> NY </state> </address> <phone> (555) 555-1234 </phone> </person>
Grammars • G = a grammar • L(G) = Language defined by G • w L(G) means w is a valid L(G) sentence • Example: • G = English grammar • G = Java grammar
Grammar Rules • An EBNF grammar is a list of rules of the form: • PARENT ::= CHILDREN • CHILDREN is a regular expression: • A B, A | B, A*, A?, 'leaf'
Addresses EBNF ADDRESSES ::= PERSON*PERSON ::= NAME ADDRESS PHONENAME ::= FIRST LASTADDRESS ::= STREET CITY STATEPHONE, FIRST, LAST, STREET, CITY, STATE ::= STRING
addresses.dtd <!ELEMENT addresses (person*)><!ELEMENT person (name, address, phone)><!ELEMENT name (first, last)><!ELEMENT first (#PCDATA)><!ELEMENT last (#PCDATA)><!ELEMENT address (street, city, state)><!ELEMENT street (#PCDATA)><!ELEMENT city (#PCDATA)><!ELEMENT state (#PCDATA)><!ELEMENT phone (#PCDATA)>
book.xml (with a dtd) <?xml version="1.0"?><!DOCTYPE addresses SYSTEM "addresses.dtd"><addresses> PERSON PERSON PERSON ...</addresses>
Well Formed vs. Valid Documents • Validating Parsers determine if an XML document conforms to its DTD • Non-validating parsers merely determine if an xml document is well formed
Extensible Style Sheet Language • XSL is an XML language for describing a transformation • An XSL document describes a transformation that transforms XML documents into xHTML documents
XSL Format <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"><xsl:template match="/"> HTML + XML instructions </xsl:template></xsl:stylesheet>
XSL Markup • <xsl:for-each select=TAG> ... </for-each> • selects each element in an XML document matching TAG and performs ... • <xsl:value-of select=TAG /> • Displays the value of TAG
addresses.xsl <html><head><title> Addresses </title></head><body>Here are your addresses:<xsl:for-each select="addresses/person"> <br /><hr /> <font color="red"> <b><i> name = <xsl:value-of select="name"/> </i></b> </font> <br /> phone = <xsl:value-of select="phone"/></xsl:for-each> <br /><hr /></body></html></xsl:template> </xsl:stylesheet>
book.xml (with an xsl) <?xml version="1.0"?><!DOCTYPE addresses SYSTEM "addresses.dtd"><?xml-stylesheet type="text/xsl" href="addresses.xsl"?><addresses> PERSON PERSON PERSON ...</addresses>