280 likes | 420 Views
Chapter 2: Well-Formed XML. Chapter 2 Objectives. How to create SML elements using start-tags and end-tags How to further describe elements with attributes How to declare your document as being XML How to send instructions to applications that are processing the XML document
E N D
Chapter 2 Objectives • How to create SML elements using start-tags and end-tags • How to further describe elements with attributes • How to declare your document as being XML • How to send instructions to applications that are processing the XML document • Which characters aren’t allowed in XML – and how to use them in your documents anyway!
Parsing XML Microsoft Internet Explorer Parser Apache Xerces James Clark's Expat
Tags and Text and Elements,Oh My! <name> <first>John</first> <middle>Fitzgerald Johanson</middle> <last>Doe</last> • <first> is a start-tag • </first> is and end-tag • <first>John</first> is an element
Try It Out Creating a Distribution Process
Rules for Elements ❑Every start-tag must have a matching end-tag, or be a self-closing tag. ❑Tags can’t overlap; elements must be properly nested. ❑XML documents can have only one root element. ❑Element names must obey XML naming conventions. ❑XML is case sensitive. ❑XML will keep whitespace in your PCDATA. Every Start Tag Must Have An End Tag
Rules for Elements Bad Example <name>John</name> <name>Jane</name> Good Example <names> <name>John</name> <name>Jane</name> </names> Can Have Only One Root Element
Rules for Elements • Names can start with letters, no numbers • After first character, numbers, hyphens and periods are allowed • Names can’t contain spaces • There are reserved characters like “:” • Names can’t start with the letters “xml”, “XML”, or “Xml”, or any other combination • No spaces after the “<“, but before the “>” if desired Elements Must Obey XML Naming Conventions
Rules for Elements These are two different elements <name>John</name> <NAME>John</NAME> Case Sensitivity
Rules for Elements Whitespace stripping takes place in HTML… <P>This is a paragraph. It has a whole bunch<BR> of space.</P> …but not in XML Example <tag>This is a paragraph. It has a whole Bunch of space.</tag> This is a paragraph. It has a whole Bunch of space. Whitespace in PCDATA
Rules for Elements • Windows uses both the line feed and the carriage return • UNIX uses only line feed • XML parsers will convert all Windows “line feed and carriage returns” to just line feed characters to standardize end-of-line logic End-of-Line Whitespace
Rules for Elements <Tag> <AnotherTag>This is some XML</AnotherTag> </Tag> Readability Whitespace This is known as extraneous whitespace in the markup.
Attributes <name nickname=“Shiny John”> <first>John</first> <middle>Fitzgerald Johansen</middle> <last>Doe</last> </name>
Why use attributes • There is nothing that an attribute can do that an element can’t, but not vice-versa • They can be handy for “meta” data • Suppose you wanted to include the number of individual orders? • They are smaller than elements, but • Attributes are unordered • Some people just like them
Try It Out Adding Attributes to Our Orders
Comments <name nickname=‘Shiny John’> <first>John</first> <!--John lost his middle name in a fire--> <middle></middle> <last>Doe</last> </name>
Try It Out Some Comments on Orders
Empty Elements <name nickname=‘Shiny John’> <first>John</first> <!--John lost his middle name in a fire--> <middle></middle> <last>Doe</last> </name> <middle/>
XML Declaration <?xml version=‘1.0’ encoding=‘UTF-16’ standalone=‘yes’?> <name nickname=‘Shiny John’> <first>John</first> <!--John lost his middle name in a fire--> <middle/> <last>Doe</last> </name> Define the Encoding and Standalone Attributes
Try It Out Declaring Our Orders to the World
Processing Instructions <?xml version=‘1.0’?> <name nickname=‘Shiny John’> <first>John</first> <!--John lost his middle name in a fire--> <middle/> <?nameprocessor SELECT * FROM blah?> <last>Doe</last> </name>
Illegal PCDATA Characters <!--This is not well-formed XML!--> <comparison>6 is < 7 & 7 > 6</comparison> Ouch
Escaping Characters <comparison>6 is < 7 & 7 > 6 </comparison>
CDATA Sections <script language=‘JavaScript’> <![CDATA[ function myFunc() { if(0 < 1 && 1 < 2) alert(“Hello”); } ]]> </script>
Try It Out Talking about HTML in XML
Errors in XML There Are Errors, and Then There Are Fatal Errors • Errors • Violations • May recover • Continue processing • Fatal errors • Draconian error handling • Not allowed to continue
Try It Out • Adding Attributes to Our Orders • Some Comments to Our Orders • Declaring Our Orders To The World • An Order To Be Processes • Talking About HTML in XML