Week 7 COAP 2180
Week seven includes three main topics:
- XML Schema, a more powerful document type definition (gramar) language
- XML Q/R if necessary
- 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 !
- CSS grids (Mozilla), CSS Grid Layout (MDN). As of Feb 2017 it is W3C Candidate Recommendation
- Tour de XML (other layout languages)
- XSD tutorial - Basics
- xml-schema.pdf (slides with same contents)
- XSD example directory: xsd-examples/ (not really needed)
- XML Schema Part 0: Primer Second Edition (W3C Recommendation 28 October 2004, you should have at least a short look at this).
- Text book chapters in the world classroom (see below)
- 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)
- 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
- Continue adding data constraints to your XSD, e.g. either a Value constraint for a number or a restricted lists of words to choose from.
- Validate the XML against the XSD.
- Work on term project.
The simplest method for validating is the following (in XML Exchanger):
- Remove the DTD reference from the XML
- 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 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>
<?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>
- 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
- 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>
<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.
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.