␡
- XML Reference Guide
- Overview
- What Is XML?
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Table of Contents
- The Document Object Model
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- DOM and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- Implementations
- DOM and JavaScript
- Using a Repeater
- Repeaters and XML
- Repeater Resources
- DOM and .NET
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Downloads
- DOM and C++
- DOM and C++ Resources
- DOM and Perl
- DOM and Perl Resources
- DOM and PHP
- DOM and PHP Resources
- DOM Level 3
- DOM Level 3 Core
- DOM Level 3 Load and Save
- DOM Level 3 XPath
- DOM Level 3 Validation
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Implementations
- The Simple API for XML (SAX)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- SAX and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- SAX and .NET
- Informit Articles and Sample Chapters
- SAX and Perl
- SAX and Perl Resources
- SAX and PHP
- SAX and PHP Resources
- Validation
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Document Type Definitions (DTDs)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XML Schemas
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- RELAX NG
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Schematron
- Official Documentation and Implementations
- Validation in Applications
- Informit Articles and Sample Chapters
- Books and e-Books
- XSL Transformations (XSLT)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XSLT in Java
- Java in XSLT Resources
- XSLT and RSS in .NET
- XSLT and RSS in .NET Resources
- XSL-FO
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XPath
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XML Base
- Informit Articles and Sample Chapters
- Official Documentation
- XHTML
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XHTML 2.0
- Documentation
- Cascading Style Sheets
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XUL
- XUL References
- XML Events
- XML Events Resources
- XML Data Binding
- Informit Articles and Sample Chapters
- Books and e-Books
- Specifications
- Implementations
- XML and Databases
- Informit Articles and Sample Chapters
- Books and e-Books
- Online Resources
- Official Documentation
- SQL Server and FOR XML
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Implementations
- Service Oriented Architecture
- Web Services
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Creating a Perl Web Service Client
- SOAP::Lite
- Amazon Web Services
- Creating the Movable Type Plug-in
- Perl, Amazon, and Movable Type Resources
- Apache Axis2
- REST
- REST Resources
- SOAP
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- SOAP and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- WSDL
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- UDDI
- UDDI Resources
- XML-RPC
- XML-RPC in PHP
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Ajax
- Asynchronous Javascript
- Client-side XSLT
- SAJAX and PHP
- Ajax Resources
- JSON
- Ruby on Rails
- Creating Objects
- Ruby Basics: Arrays and Other Sundry Bits
- Ruby Basics: Iterators and Persistence
- Starting on the Rails
- Rails and Databases
- Rails: Ajax and Partials
- Rails Resources
- Web Services Security
- Web Services Security Resources
- SAML
- Informit Articles and Sample Chapters
- Books and e-Books
- Specification and Implementation
- XML Digital Signatures
- XML Digital Signatures Resources
- XML Key Management Services
- Resources for XML Key Management Services
- Internationalization
- Resources
- Grid Computing
- Grid Resources
- Web Services Resource Framework
- Web Services Resource Framework Resources
- WS-Addressing
- WS-Addressing Resources
- WS-Notifications
- New Languages: XML in Use
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Google Web Toolkit
- GWT Basic Interactivity
- Google Sitemaps
- Google Sitemaps Resources
- Accessibility
- Web Accessibility
- XML Accessibility
- Accessibility Resources
- The Semantic Web
- Defining a New Ontology
- OWL: Web Ontology Language
- Semantic Web Resources
- Google Base
- Microformats
- StructuredBlogging
- Live Clipboard
- WML
- XHTML-MP
- WML Resources
- Google Web Services
- Google Web Services API
- Google Web Services Resources
- The Yahoo! Web Services Interface
- Yahoo! Web Services and PHP
- Yahoo! Web Services Resources
- eBay REST API
- WordML
- WordML Part 2: Lists
- WordML Part 3: Tables
- WordML Resources
- DocBook
- Articles
- Books and e-Books
- Official Documentation and Implementations
- XML Query
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XForms
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Resource Description Framework (RDF)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Topic Maps
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation, Implementations, and Other Resources
- Rich Site Summary (RSS)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Simple Sharing Extensions (SSE)
- Atom
- Podcasting
- Podcasting Resources
- Scalable Vector Graphics (SVG)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- OPML
- OPML Resources
- Summary
- Projects
- JavaScript TimeTracker: JSON and PHP
- The Javascript Timetracker
- Refactoring to Javascript Objects
- Creating the Yahoo! Widget
- Web Mashup
- Google Maps
- Indeed Mashup
- Mashup Part 3: Putting It All Together
- Additional Resources
- Frequently Asked Questions About XML
- What's XML, and why should I use it?
- What's a well-formed document?
- What's the difference between XML and HTML?
- What's the difference between HTML and XHTML?
- Can I use XML in a browser?
- Should I use elements or attributes for my document?
- What's a namespace?
- Where can I get an XML parser?
- What's the difference between a well-formed document and a valid document?
- What's a validating parser?
- Should I use DOM or SAX for my application?
- How can I stop a SAX parser before it has parsed the entire document?
- 2005 Predictions
- 2006 Predictions
- Nick's Book Picks
Get the center location
... url = url + "&filter=1&latlong=1"; getJobs(url); getCenter(theForm.elements["l"].value); } var targetLong = null; var targetLat = null; function getJobs(theUrl){ jobsResponse = ""; jobsDone = false; var request = GXmlHttp.create(); request.open('GET', 'proxy.php?url='+URLencode(theUrl), true); request.onreadystatechange = function() { if (request.readyState == 4) { var jobDoc = GXml.parse(request.responseText); displayJobs(jobDoc); } }; request.send(null); } function getCenter(theZip){ var request = GXmlHttp.create(); request.open('GET', 'proxy.php?url='+URLencode('http://geocoder.us/service/csv/geocode?zip='+theZip), true); request.onreadystatechange = function() { if (request.readyState == 4) { //Do something } }; request.send(null); } function displayJobs(jobDoc){ var jobsElement = jobDoc.documentElement.getElementsByTagName("results").item(0); ...1 Coordinating responses
... var targetLong = null; var targetLat = null; var jobsResponse = ""; var jobsDone = false; function getJobs(theUrl){ jobsResponse = ""; jobsDone = false; var request = GXmlHttp.create(); request.open('GET', 'proxy.php?url='+URLencode(theUrl), true); request.onreadystatechange = function() { if (request.readyState == 4) { jobsResponse = request.responseText; jobsDone = true; checkStatus(); } }; request.send(null); } var centerResponse = ""; var centerDone = false; function getCenter(theZip){ centerDone = false; var request = GXmlHttp.create(); request.open('GET', 'proxy.php?url='+URLencode('http://geocoder.us/service/csv/geocode?zip='+theZip), true); request.onreadystatechange = function() { if (request.readyState == 4) { centerResponse = request.responseText; centerDone = true; checkStatus(); } }; request.send(null); } function checkStatus(){ if (!(jobsDone && centerDone)){ document.getElementById("jobs").innerHTML = "Starting..."; } else if (!(jobsDone || centerDone)){ document.getElementById("jobs").innerHTML = "Almost there..."; } else if (jobsDone && centerDone){ var jobDoc = GXml.parse(jobsResponse); displayJobs(jobDoc); } } ...2 Parse the center location
... function checkStatus(){ if (!(jobsDone && centerDone)){ document.getElementById("jobs").innerHTML = "Starting..."; } else if (!(jobsDone || centerDone)){ document.getElementById("jobs").innerHTML = "Almost there..."; } else if (jobsDone && centerDone){ var centerArray = centerResponse.split(","); targetLat = centerArray[0]; targetLong = centerArray[1]; var jobDoc = GXml.parse(jobsResponse); displayJobs(jobDoc); } } ...3 Create the job array
... function displayJobs(jobDoc){ var totalResultsElement = jobDoc.documentElement.getElementsByTagName("totalresults").item(0); var numberOfJobs = GXml.value(totalResultsElement); var jobString = "There are "+numberOfJobs+" jobs.4 Comparing array items
"; var jobsElement = jobDoc.documentElement.getElementsByTagName("results").item(0); var jobsList = jobsElement.getElementsByTagName("result"); var numberOfJobsOnThisPage = jobsList.length; jobString = jobString + "<table>"; var jobsArray = new Array(); for (i = 0; i < numberOfJobsOnThisPage; i++){ var thisJob = jobsList.item(i); jobsArray[i] = thisJob; } for (i = 0; i < numberOfJobsOnThisPage; i++){ var thisJob = jobsArray[i]; var infoUrl = GXml.value(thisJob.getElementsByTagName("url").item(0)); ...
... getJobs(url); getCenter(theForm.elements["l"].value); } function compare (a, b){ latitudeA = GXml.value(a.getElementsByTagName("latitude").item(0)); longitudeA = GXml.value(a.getElementsByTagName("longitude").item(0)); distanceAsquared = (targetLat - latitudeA)*(targetLat - latitudeA) + (targetLong - longitudeA)*(targetLong - longitudeA); latitudeB = GXml.value(b.getElementsByTagName("latitude").item(0)); longitudeB = GXml.value(b.getElementsByTagName("longitude").item(0)); distanceBsquared = (targetLat - latitudeB)*(targetLat - latitudeB) + (targetLong - longitudeB)*(targetLong - longitudeB); return distanceAsquared - distanceBsquared; } var targetLong = null; var targetLat = null; ...Sorting the array
... var jobsArray = new Array(); for (i = 0; i < numberOfJobs; i++){ var thisJob = jobsList.item(i); jobsArray[i] = thisJob; } jobsArray.sort(compare); for (i = 0; i < numberOfJobs; i++){ var thisJob = jobsArray[i]; var infoUrl = GXml.value(thisJob.getElementsByTagName("url").item(0)); ...5 Test the orders
... var jobsArray = new Array(); for (i = 0; i < numberOfJobs; i++){ var thisJob = jobsList.item(i); var jobtitle = GXml.value(thisJob.getElementsByTagName("jobtitle").item(0)); jobString = jobString + jobtitle + "<br />"; jobsArray[i] = thisJob; } jobsArray.sort(compare); ...6