Home > Articles > Web Services > XML

XML Reference Guide

📄 Contents

  1. XML Reference Guide
  2. Overview
  3. What Is XML?
  4. Informit Articles and Sample Chapters
  5. Books and e-Books
  6. Official Documentation
  7. Table of Contents
  8. The Document Object Model
  9. Informit Articles and Sample Chapters
  10. Books and e-Books
  11. Official Documentation
  12. DOM and Java
  13. Informit Articles and Sample Chapters
  14. Books and e-Books
  15. Implementations
  16. DOM and JavaScript
  17. Using a Repeater
  18. Repeaters and XML
  19. Repeater Resources
  20. DOM and .NET
  21. Informit Articles and Sample Chapters
  22. Books and e-Books
  23. Documentation and Downloads
  24. DOM and C++
  25. DOM and C++ Resources
  26. DOM and Perl
  27. DOM and Perl Resources
  28. DOM and PHP
  29. DOM and PHP Resources
  30. DOM Level 3
  31. DOM Level 3 Core
  32. DOM Level 3 Load and Save
  33. DOM Level 3 XPath
  34. DOM Level 3 Validation
  35. Informit Articles and Sample Chapters
  36. Books and e-Books
  37. Documentation and Implementations
  38. The Simple API for XML (SAX)
  39. Informit Articles and Sample Chapters
  40. Books and e-Books
  41. Official Documentation
  42. SAX and Java
  43. Informit Articles and Sample Chapters
  44. Books and e-Books
  45. SAX and .NET
  46. Informit Articles and Sample Chapters
  47. SAX and Perl
  48. SAX and Perl Resources
  49. SAX and PHP
  50. SAX and PHP Resources
  51. Validation
  52. Informit Articles and Sample Chapters
  53. Books and e-Books
  54. Official Documentation
  55. Document Type Definitions (DTDs)
  56. Informit Articles and Sample Chapters
  57. Books and e-Books
  58. Official Documentation
  59. XML Schemas
  60. Informit Articles and Sample Chapters
  61. Books and e-Books
  62. Official Documentation
  63. RELAX NG
  64. Informit Articles and Sample Chapters
  65. Books and e-Books
  66. Official Documentation
  67. Schematron
  68. Official Documentation and Implementations
  69. Validation in Applications
  70. Informit Articles and Sample Chapters
  71. Books and e-Books
  72. XSL Transformations (XSLT)
  73. Informit Articles and Sample Chapters
  74. Books and e-Books
  75. Official Documentation
  76. XSLT in Java
  77. Java in XSLT Resources
  78. XSLT and RSS in .NET
  79. XSLT and RSS in .NET Resources
  80. XSL-FO
  81. Informit Articles and Sample Chapters
  82. Books and e-Books
  83. Official Documentation
  84. XPath
  85. Informit Articles and Sample Chapters
  86. Books and e-Books
  87. Official Documentation
  88. XML Base
  89. Informit Articles and Sample Chapters
  90. Official Documentation
  91. XHTML
  92. Informit Articles and Sample Chapters
  93. Books and e-Books
  94. Official Documentation
  95. XHTML 2.0
  96. Documentation
  97. Cascading Style Sheets
  98. Informit Articles and Sample Chapters
  99. Books and e-Books
  100. Official Documentation
  101. XUL
  102. XUL References
  103. XML Events
  104. XML Events Resources
  105. XML Data Binding
  106. Informit Articles and Sample Chapters
  107. Books and e-Books
  108. Specifications
  109. Implementations
  110. XML and Databases
  111. Informit Articles and Sample Chapters
  112. Books and e-Books
  113. Online Resources
  114. Official Documentation
  115. SQL Server and FOR XML
  116. Informit Articles and Sample Chapters
  117. Books and e-Books
  118. Documentation and Implementations
  119. Service Oriented Architecture
  120. Web Services
  121. Informit Articles and Sample Chapters
  122. Books and e-Books
  123. Official Documentation
  124. Creating a Perl Web Service Client
  125. SOAP::Lite
  126. Amazon Web Services
  127. Creating the Movable Type Plug-in
  128. Perl, Amazon, and Movable Type Resources
  129. Apache Axis2
  130. REST
  131. REST Resources
  132. SOAP
  133. Informit Articles and Sample Chapters
  134. Books and e-Books
  135. Official Documentation
  136. SOAP and Java
  137. Informit Articles and Sample Chapters
  138. Books and e-Books
  139. Official Documentation
  140. WSDL
  141. Informit Articles and Sample Chapters
  142. Books and e-Books
  143. Official Documentation
  144. UDDI
  145. UDDI Resources
  146. XML-RPC
  147. XML-RPC in PHP
  148. Informit Articles and Sample Chapters
  149. Books and e-Books
  150. Official Documentation
  151. Ajax
  152. Asynchronous Javascript
  153. Client-side XSLT
  154. SAJAX and PHP
  155. Ajax Resources
  156. JSON
  157. Ruby on Rails
  158. Creating Objects
  159. Ruby Basics: Arrays and Other Sundry Bits
  160. Ruby Basics: Iterators and Persistence
  161. Starting on the Rails
  162. Rails and Databases
  163. Rails: Ajax and Partials
  164. Rails Resources
  165. Web Services Security
  166. Web Services Security Resources
  167. SAML
  168. Informit Articles and Sample Chapters
  169. Books and e-Books
  170. Specification and Implementation
  171. XML Digital Signatures
  172. XML Digital Signatures Resources
  173. XML Key Management Services
  174. Resources for XML Key Management Services
  175. Internationalization
  176. Resources
  177. Grid Computing
  178. Grid Resources
  179. Web Services Resource Framework
  180. Web Services Resource Framework Resources
  181. WS-Addressing
  182. WS-Addressing Resources
  183. WS-Notifications
  184. New Languages: XML in Use
  185. Informit Articles and Sample Chapters
  186. Books and e-Books
  187. Official Documentation
  188. Google Web Toolkit
  189. GWT Basic Interactivity
  190. Google Sitemaps
  191. Google Sitemaps Resources
  192. Accessibility
  193. Web Accessibility
  194. XML Accessibility
  195. Accessibility Resources
  196. The Semantic Web
  197. Defining a New Ontology
  198. OWL: Web Ontology Language
  199. Semantic Web Resources
  200. Google Base
  201. Microformats
  202. StructuredBlogging
  203. Live Clipboard
  204. WML
  205. XHTML-MP
  206. WML Resources
  207. Google Web Services
  208. Google Web Services API
  209. Google Web Services Resources
  210. The Yahoo! Web Services Interface
  211. Yahoo! Web Services and PHP
  212. Yahoo! Web Services Resources
  213. eBay REST API
  214. WordML
  215. WordML Part 2: Lists
  216. WordML Part 3: Tables
  217. WordML Resources
  218. DocBook
  219. Articles
  220. Books and e-Books
  221. Official Documentation and Implementations
  222. XML Query
  223. Informit Articles and Sample Chapters
  224. Books and e-Books
  225. Official Documentation
  226. XForms
  227. Informit Articles and Sample Chapters
  228. Books and e-Books
  229. Official Documentation
  230. Resource Description Framework (RDF)
  231. Informit Articles and Sample Chapters
  232. Books and e-Books
  233. Official Documentation
  234. Topic Maps
  235. Informit Articles and Sample Chapters
  236. Books and e-Books
  237. Official Documentation, Implementations, and Other Resources
  238. Rich Site Summary (RSS)
  239. Informit Articles and Sample Chapters
  240. Books and e-Books
  241. Official Documentation
  242. Simple Sharing Extensions (SSE)
  243. Atom
  244. Podcasting
  245. Podcasting Resources
  246. Scalable Vector Graphics (SVG)
  247. Informit Articles and Sample Chapters
  248. Books and e-Books
  249. Official Documentation
  250. OPML
  251. OPML Resources
  252. Summary
  253. Projects
  254. JavaScript TimeTracker: JSON and PHP
  255. The Javascript Timetracker
  256. Refactoring to Javascript Objects
  257. Creating the Yahoo! Widget
  258. Web Mashup
  259. Google Maps
  260. Indeed Mashup
  261. Mashup Part 3: Putting It All Together
  262. Additional Resources
  263. Frequently Asked Questions About XML
  264. What's XML, and why should I use it?
  265. What's a well-formed document?
  266. What's the difference between XML and HTML?
  267. What's the difference between HTML and XHTML?
  268. Can I use XML in a browser?
  269. Should I use elements or attributes for my document?
  270. What's a namespace?
  271. Where can I get an XML parser?
  272. What's the difference between a well-formed document and a valid document?
  273. What's a validating parser?
  274. Should I use DOM or SAX for my application?
  275. How can I stop a SAX parser before it has parsed the entire document?
  276. 2005 Predictions
  277. 2006 Predictions
  278. Nick's Book Picks

When Jen Bortel, my boss here at Informit, first asked me to do some content on Ruby, I was thrilled. After all, I've been hearing just as much about Ruby, and Ruby on Rails, as you have. Maybe even more. I kept hearing a lot of talk about how easy it was, how productive you can be, how fast it is to develop in, and all of those things we programmers love to hear.

After stumbling around for a few days trying to get everything configured, I was beginning to wonder. Fortunately, the problem was me. If you read the right documentation, getting an application running in Ruby -- and particularly in Ruby on Rails -- is almost ridiculously easy. Before you finish this guide entry, you're going to see just how ridiculously easy it is.

This entry begins a series on developing with Ruby and with Ruby on Rails. In it, we're going to develop a simple survey application. We'll start with a commandline interface, and then move to the Web.

But first we have to answer these simple questions: what the heck is Ruby anyway? And why we're at it, what is Rails? And why is Ruby on it?

Let's start at the beginning.

Simply put, Ruby is an object-oriented language. It has its own syntax, which may or may not seem familiar to you based on what languages you're familiar with. It is designed to make programming easy. And in many ways, it does just that, though I'm a little skeptical of Ruby's claims that its syntax is much like speech. You can build all sorts of applications using Ruby. You can build commandline applications, window based applications, and even Web applications. You can run Ruby as a CGI application. You can use Ruby in an environment in which it acts much like PHP, with embedded commands on the page.

And you can and do all of that without Rails.

So why do you even need Rails? What is the big deal about it? What is it?

Rails, in my opinion, is the reason you're hearing so much about Ruby. Rails is an application framework that enables you to create Ruby applications for the Web in no time. Well, in almost no time.

It happened like this: David Heinemeier Hansson was working on a web application called Basecamp. Basecamp is a project management application, but the important thing is that Hansson decided that there were certain things that he had to do over and over again that had nothing to do with the actual application. For example, accessing the database. Or finding a particular object. Or creating a Web form where people could enter information.

So he did what many of us have done in the same situation; he created a framework that did a lot of the "heavy lifting" for us. The difference is that this framework is for Ruby applications, and it's now publicly available. That framework became Rails.

To sum up so far, Ruby is a new programming language, and Rails is a particular kind of application written in Ruby.

For the rest of this entry, I'm going to show you how easy it can be to get a Rails application up and running. I'll be giving specific instructions for Windows, but the Linux instructions are basically the same. (Also, I'll be ducking the whole web server issue by using the development HTTP server that comes with Rails.)

The basic process looks like this:

  1. Install Ruby.
  2. Install Rails.
  3. Create the database tables.
  4. Have Rails create the skeleton web application.
  5. Start the web server
  6. Configure the web application.
  7. Add the code.

Installation

Let's start with installation:

  1. First, you'll need to install Ruby, and Rails. Download Ruby for Windows or other platforms. (Check the Ruby Home Page for the most recent version.)
  2. If you're installing on Windows, and you've downloaded the one click installer, run the installer to complete the installation. If you're installing from source, follow the directions with your distribution.
  3. Download RubyGems. This is the Ruby package manager. Unpack it into your Ruby directory.
  4. Install Rails by executing the following command from the commandline:
    gem install rails
    You will need to be online for this to work. Accept all of the dependencies.

Create the database

Now that you've got everything installed, let's talk about the application we're going to ultimately build. It's a simple survey application, with the ability to add new polls, each of which has one or more questions, each of which has one or more answers. We'll look at multiple ways to store this information, but for right now, we're going to use a database.

Ruby works with multiple databases, but for our purposes, we're going to use MySQL. (If you haven't already got it installed, download it from http://www.mysql.com/.) Log into the interactive console and create the following objects:

create database surveysays;

create table surveys (
   `id` INT NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR( 100 ) NOT NULL ,
  PRIMARY KEY ( `id` )
);

Ultimately, we'll have tables for the questions, answers, and results, but for now, we'll use only the surveys table to keep things simple.

Create the web application

It is Rails that creates the actual web application, so open a command prompt window and change to the directory in which you want your web application to live. For example, I want my full path to be:

c:\Inetpub\Surveysays

so I change to the c:\Inetpub directory and type:

rails Surveysays

In just a moment or so, Rails creates the entire structure of the application.

Start the web server

To make things simple, Rails comes with a simple web server called Webbrick. You wouldn't want to run your production application with it, but depending on your platform, setting up a production web server for Rails can be a significant challenge.

To start the server, change to the Surveysays directory and type:

ruby script\server

To make sure it's working, open your browser and point it to:

http://localhost:3000

You should see a page something like this.

Configure the application

Rails will handle all of the database interaction for you, but you have to tell it where to find the database. To do that, use a text editor to edit the config\database.yml file so that the first section reads:

development:
  adapter: mysql
  database: surveysays
  host: localhost
  username: root
  password:

Make sure, of course, that the information is accurate for your installation.

Add the code

Even though we haven't added a single line of code yet, we are actually almost done. We're going to create a simple web application that lists all of the available surveys, and includes the ability to add, edit, and delete individual surveys.

Later, when we go into building a Rails application in detail, we'll talk about the Model-View-Controller pattern it uses as its architecture. For now, though, understand that we are linking the logic portion (the Controller) with the data portion (the Model).

Start by creating the Model and Controller by typing the following at the commandline from the Surveysays directory:

ruby script\generate model Survey
ruby script\generate controller survey

Using your text editor, open the Surveysays\app\controllers\survey_controller.rb file. Add the following:

class SurveyController < ApplicationController

   model :survey
   scaffold :survey

end

All we've done here is let the controller know what kind of object it is responsible for. The second line, the scaffold, provides everything we need for maintaining this data through the web. Point your browser at:

http://localhost:3000/survey/list

You should see something like:

Scaffolding

We don't have any records yet, so of course nothing is displayed. But you can use the New Survey link to create a new one, and the subsequent links to edit or delete them. By just adding these two lines of code, we've created an application -- albeit a very simple one -- that enables us to manage this data.

Scaffolding

Of course, this is not an application that we would ultimately release, and Ruby on Rails enables us to customize any aspect of the display or logic. This is just an example of how simple the process really is.

Next week, we'll talk about the actual application, and look at the basics of the Ruby language itself.

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.