COAP:COAP-2180/week7

The educational technology and digital learning wiki
Jump to navigation Jump to search

Week 7 COAP 2180

Week seven includes three main topics:

  1. XML Schema, a more powerful document type definition (gramar) language
  2. XML Q/R if necessary
  3. Work on term project. Each student should a have a good DTD, a provisional XML Schema, an XML test file and an XSLT by the end of the week !

In addition:

Teaching materials

Textbook chapters

  • Ray, Learning XML, Second Edition, Chapter 4, Quality Control with Schemas (ok explanation by example, but a bit too short)
  • Harold, XML in a Nutshell, Chapter 17, XML Schema (this text is not too easy to understand, but useful reading anyhow)
  • Harold, XML in a Nutshell, Chapter 22, Schemas reference (For reference, in particular for full-time CS students)

Classroom activities

Monday

  • Translate your "best" DTD to XSD, using the Exchanger Editor (menu Schema->Convert Schema)
  • Add at least one data constraint to your XSD, e.g. either a Value constraint for a number or a restricted lists of words to choose from.
  • Validate the XSD Schema
  • Validate the XML (remove the DTD and manually select the XSD when asked)
  • Work on term project. See the week8 page

Wednesday

The simplest method for validating is the following (in XML Exchanger):

  1. Remove the DTD reference from the XML
  2. Click on the "validation" button, then provide the filename of the XSD.

... of course, you will have to repeat this procedure each time you open the XML file

More ambitious students can try to associate the XML with the XSD. You need to make changes in both XML and XSD files, as shown in the following example. Change the "myrecipes.org" in the example below by a namespace of your own. In addition (more difficult), you will have to add namespaces to the XSLT. Read Using XSLT with documents that have a single name space

XML file:

  <?xml version="1.0"?>
  <list
    xmlns="http://myrecipes.org/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://myrecipes.org/ recipe.xsd" 
   >
     ......
  </list>

XSD file:

 <?xml version="1.0"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://myrecipes.org/" 
            xmlns="http://myrecipes.org/" 
            elementFormDefault="qualified">
    ....
 </xs:schema>

Homework 7

Task

  • Take the DTD from your term project or homework 4/5.
  • Create an XSD from the DTD
  • Add several extra constraints that are appropriate with respect to your project (as many as possible and useful). Typically you may constrain the number of child elements and add data types for element and/or attribute contents.
  • Create an XML test file. XSLT/CSS is not required

Tips:

  • Look at examples (includes ones that could be found on the Internet). e.g. you can google something like "XSD datatypes example"
  • There are two validation methods in Exchanger:
(1) Exchanger can easily validate the following kind of XML/XSD combination (as explained in the XSD tutorial)

XML file fragment:

<your_root
  xmlns="http://myrecipes.org/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://myrecipes.org/ recipe.xsd">
 ...
<your_root>

XSD fragment:

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	    targetNamespace="http://myrecipes.org/" 
	    xmlns="http://myrecipes.org/" 
	    elementFormDefault="qualified">
  ...
 </xs:schema>

(2) If you are not able to get this to work, then just remove all DTD and Schema-related information from your XML and tell Exchanger where to find the Schema file when you hit the validation button.

Conversion

To translate a DTD to an XSD, use Menu Schema->Convert Schema.

Deadline and submission:

  • Monday week 8 (before start of class)
  • Use the world classroom
  • Submit the *.xsd, the *.xml test files, and an optional optional report file (see below)

Evaluation criteria (roughly)

Work considered as weak:

  • Pure translation without any extra hand editing

Work considered as minimalist:

  • Minimal changes, e.g. a single extra constraint with respect to the number of child elements

Good work and excellent work (B to A-) may include one or several of the following:

  • Inserted comments in the XSD that explain some (not all) of the schema
  • A report (e.g. in HTML, word, PDF etc.)
  • All possible sorts of extra constraints you could reasonably use for your problem, i.e. more than I require for the term project...

Brilliant work (A)

  • Does all of the above, i.e. produces a result that could be used in real life.