eXtensible Markup Language
Tech Talk by Ruth Naebeck

Agenda
- Introduction to XML
- Creating XMLs
- Extracting Data from XMLs
What is XML?
- Markup Language
- No pre-defined tags
- Does nothing
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>XML Job Search
Indeed.com within 5 miles:




XML Uses
- Complement HTML
- Transaction Data
- Data Transformation


Creating XML Files
XML Tree
- Root (required)
- Parent
- Child
- Sibling
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>XML Element
- Contents
- Empty Elements:
- <empty attribute="value" />
- Naming Rules
- Extensible
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>XML Attributes
- Must be Quoted
- No Rules
- Things to Consider
- Recommended Use
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>XML Data Extraction
Dealing with XML files created by others
XML DOM
XML Elements

XML Nodes
- Document
- Elements
- Text
- Attributes
- Comments
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>Accessing Nodes
- XMLHttpRequest
- getElementsByTagName
- Looping / Traversing
- Node Relationships
- xPath

XMLHttpRequest
var xhttp = new XMLHttpRequest()
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(xhttp.responseXML)
}
}
xhttp.open("GET", "Animals.xml", true)
xhttp.send()
function myFunction(xml) {
// Custom code here
}getElementsByTagName

<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
Looping / Traversing


puppies = array of nodes
- childNodes[1] = name node
- childNode[0] = text node
- nodeValue = text
- childNode[0] = text node
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>Node Relationships

puppies = array of nodes
- firstElementChild = name node
- firstChild = text node
- nodeValue = text
- firstChild = text node

<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>xPath
- Selecting Nodes
- Predicates
- Wildcards
- xmlDoc.selectNodes
- xmlDoc.evaluate

xPath Solution
document.evaluate xPath
- returns xPathResult
- iterateNext method
- innerHTML
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>


Conclusion
- Introduction to XML
- Creating XMLs
- Extracting Data from XMLs
Thank You!


TechTalk
By ruthnaebeck
TechTalk
XML (eXtensible Markup Language)
- 417