CS639
– class 1
Syllabus
Home PC
JEE Eclipse – IDE
JDK for Java 6.
ant – related to the command line (see linked setup doc from the class webpage)
You will be delivering on UNIX/Linux. You can do tests over here using ant on our systems.
For Wednesday you should run apply in S/3/158. I’ll set up a Google group and invite you via your local email.
greeting.xml (the HelloWorld of XML)
<?xml version=”1.0”?>
<greeting> ß start
tag
|
Hello, XML! ß
content of this element |
ß character
data
| all this is a XML fragment, and the greeting element
</greeting> ß
end
tag
|
“greeting” is the tag name, chosen by the designer
Page 9 Example (a fragment):
------
<Product>
<Name> Birdsong
clock
</Name>
// this is an element, child of Product element
<Quantity> 12
</Quantity>
<SKU>244</SKU>
<Price currency =
“USD”> 21.95 </Price> //element
... //
see text
...
</Product>
------
Between the 2 ----- there is another element.
<Price currency=“USD”> start tag. Price. currency is an attribute of the price element.
“USD” is the attribute value for the currency attribute
Note that the price value is in the element content, and the attribute says what the units mean, a common XML usage pattern.
This looks like class Product with fields Name, Quantity etc.
But not all Elements look like that! We can have multiple elements of the same name---
<Customer>
<Name> Joe
</Name>
<Phone> 617 – 999 – 9999 </Phone>
<Phone> 781 – 999 –
9999 </Phone>
</Customer>
Well-formed-ness: strictly
nested elements, quotes around attribute values, etc.
Foo.xml – is well-formed? You just have to browse to it. All the browsers know how to display well-formed XML.
Validity
You have an XML document and also
another document which tells you how this xml should be done. We are in
transition between 2 ways of describing XML structure.
DTDs – old way, still common. Foo.dtd – read in chapter 1 about this.
The newer way (XML Schema) is in XML itself. (DTD is not xml). We will mainly use XML schema.
To validate, means to run a program on the XML file and its DTD or schema. JDK has XML support but not programs. So someone hase to write a main program to call the various methods in the JDK. We have such a program, pointed to by Harold's XML Bible, called Counter.
- linked chap 20 of XML Bible to “complex types”
- explains how to do Counter.java (from apache) to validate XML.
In your .cshrc, be sure to set an environment variable "cs639" with value /data/htdocs/cs639, so you can see the class web page directory from UNIX.
Using the
JDK validation support via the "Counter" program.
The UNIX directory $cs639/validate has the Counter.java program, in $cs639/validate/sax/Counter.java
All we need is this main program and the JDK. We can just do "javac Counter.java" to generate Counter.class
We run Counter from the validate directory, because Counter.java has a "package sax" statement.
1. Well-formedness checking
Here's valid_greeting.xml, the basic example XML file:
<?xml
version="1.0"?>
<greeting>
Hello XML!
</greeting>
cd $cs639/validate
java sax.Counter valid_greeting.xml checks for well-formedness
I'm assuming no CLASSPATH defined (the default classpath
is . – current directory). Check for an old CLASSPATH setting with
"env|grep CLASS" and clear it out of your .cshrc if you find it. We will be using ant to set up our classpath for Java builds on UNIX as well as command-line
builds on Windows.
2. DTD validation. Look at valid_greeting1.xml
to see DOCTYPE pointing to greeting.dtd, saying "that's my DTD"
<?xml version="1.0"?>
<!DOCTYPE greeting SYSTEM "greeting.dtd">
<greeting>
Hello XML!
</greeting>
greeting.dtd is simply:
<!ELEMENT greeting (#PCDATA)>
This is saying that there is an element of tagname “greeting”, with text contents. PCDATA stands for “parseable char data”, which means text without < or >
chars that would be markup for child elements (and parsed that way). If you
want to put in a < char, you need to quote it with <
so it isn’t taken to be the start of a child element. More on this later.
java sax.Counter -v valid_greeting1.xml
checks for DTD validity
// you use –s –v for schema validation
// if we use only –v is for DTD validation. The default validation is DTD.
Next time: XML Schema validation