here - School of Engineering and Computer Science

Transcription

here - School of Engineering and Computer Science
Assignment 3
SWEN432-15/ass3(pm)
School of Engineering and Computer Science
SWEN 432
Advanced Database Design and Implementation
Assignment 3
Due date: Monday 11 May at 23:59
The objective of this assignment is to test your understanding of:
 Document Type Definition, (DTD),
 XML Documents,
 XML Schema, and
 Identity constraints of XML Schema.
The Assignment is worth 4.0% of your final grade. The Assignment is marked out
of 100.
Submit your answers to assignment questions via the school electronic
submission system and a printed version in the hand-in box in the second floor of
the Cotton Building.
When doing the assignment you will need to use the xmllint XML parser to
check whether your XML documents are valid with regard to a DTD or an XML
Schema schema.
You can use xmllint from UNIX shell. To do so, type
>xmllint
To get information how to use xmllint, type
>man xmllint
Include your commands and xmllint messages from the shell prompt in your
answers.
The xmllint parser does not recognize the syntax of new elements (like
xsd:assert) introduced in XSD 1.1. Pavle downloaded Xerces2 Java free XSD
1.1 parser and validator from:
https://jeszysblog.wordpress.com/2012/09/27/free-and-opensource-xsd-1-1-validation-tool/
SWEN432/Assignment 3
1
continued
and it does the job.
You may find the validator here:
/vol/courses/swen432/xsd11-validator.jar
You may run the validator using the command
%java –jar
<xml_file>
xsd11validator.jar
–sf
<xsd_schema_file>
-if
You may also realize that xmllint does not perform IDREF checking when it
validates a document against an XML Schema. If you need to validate
ID/IDREF constraints using XML Schema, use Xerces2 Java instead.
Question 1. Producing a valid dancingCompetition.xml
File and Mapping a DTD to XML Schema
[30 marks]
There is a dancingCompetiton_15.dtd schema given on the Assignments
course page. The schema describes dancing competitions. Dancing competitions
are held in different New Zealand cities. Different competitions may be held in the
same city on different dates, two different competitions can take place in two
different cities on the same date. In each competition pairs of dancers dance
different dances and score points for their performance. There are three judges
and each may assign up to 10 points to each pair for a dance.
a) [15 marks] Use the sample data given on the facing page to produce an XML
file that will be valid with regard to the DTD given. Call the XML file
dancingCompetiton_15.xml.
b) [15 marks] Map the dancingCompetiton_15.dtd schema into an XML
Schema schema with no loss of any structuring information or constraints.
Call it dancingCompetiton_15.xsd. The dancingCompetiton_15.xml
should validate with dancingCompetiton_15.xsd. Use constraints of
ID/IDREF type in your dancingCompetiton_15.xsd.
SWEN432/Assignment 3
2
continued
Competitions
Competition
Competition Dance
@date = 10 June 2010
@dance_data = did_10
@pair_id = p7117
@pair_id = p3223
@dance_data = did_11
@pair_id = p7117
@pair_id = p3223
@date = 10 June 2011
@dance_data = did_11
@pair_id = p5775
@pair_id = p5555
@date = 24 June 2013
@dance_data = did_10
@pair_id = p7117
@pair_id = p3223
@dance_data = did_11
@pair_id = p7117
@pair_id = p3223
@pair_id = p5555
@dance_data = did_12
@pair_id = p7117
@pair_id = p3223
@pair_id = p5555
Pair
Competition Dance
Pair
Competition
Competition Dance
Pair
Competition
Competition Dance
Pair
Competition Dance
Pair
Competition Dance
Pair
@place = w
@score = 27.50
@score = 21.75
@score = 30.00
@score = 26.25
@place = a
@score = 28.75
@score = 23.05
@place = w
@score = 23.50
@score = 23.05
@score = 28.10
@score = 24.85
@score = 29.95
@score = 20.15
@score = 25.10
@score = 29.50
Pairs and Dancers
Pair
he_dancer
she_dancer
Pair
he_dancer
she_dancer
Pair
he_dancer
she_dancer
Pair
he_dancer
she_dancer
@pir_id = p7117
@dancer_id = d7007
@dancer_id = d1001
@pir_id = p3223
@dancer_id = d3003
@dancer_id = d2002
@pir_id = p5775
@dancer_id = d7007
@dancer_id = d5005
@pir_id = p5555
@dancer_id = d5005
@dancer_id = d0550
Name = James
Name = Anny
Address = Wellington
Address = Wellington
Name = Craig
Name = Anny
Address = Auckland
Address = Christchurch
Name = James
Name = Mimi
Address = Wellington
Address = Upper Hutt
Name = Paul
Name = Elaine
Address = Upper Hutt
Address = Masterton
Dance Data
Dance Details
Dance Details
Dance Details
Dance Details
Dance Details
Dance Details
@dance_id = did_10
@dance_id = did_11
@dance_id = did_12
@dance_id = did_13
@dance_id = did_14
@dance_id = did_15
@name = Tango
@name = Rumba
@name = Foxtrot
@name = Waltz
@name = Cha-Cha
@name = Quick Step
@category = Ballroom
@category = Latin
@category = Ballroom
@category = Ballroom
@category = Latin
@category = Ballroom
Venues
Place
@place_id = w
@city = Wellington
@address = 13 Capital City Street
@hall = Hall of Stars
Place
@place_id = a
@city = Auckland
@address = 13 Dancing Street
@hall = Great Dancing Hall
Place
@place_id = c
@city = Christchurch
@address = 13 Fred Aster Street
@hall = Judy Garland Hall
SWEN432/Assignment 3
3
continued
Question 2. Identity Constraints
[27 marks]
Use the dancingCompetiton_15.xsd schema you have produced in the
question 1 above to define the identity constraints. Change the type of all
ID/IDREF attributes to xsd:string. Call the new schema
dancingCompetiton_IC_15.xsd. The dancingCompetiton_IC_15.xsd
file should contain only identity constraints (no assert constraints).
Define:
a) [2 marks] A global key that will prevent appearance of duplicate
Competition elements. (For a global constraint, the scope is the whole
document.)
b) [2 marks] A global key that will prevent appearance of duplicate
Dance_Detail elements.
c) [2 marks] A global key that will prevent appearance of duplicate Place
elements.
d) [2 marks] A local key that will prevent appearance of duplicate
Competiton_Dance elements within the scope of a Competition element.
e) [4 marks] Two different local keys for the Pair element, both valid within the
scope of a Competiton_Dance element.
f) [2 marks] The attribute @dance_data of the Competition_Dance element
as a constraint referencing Dance_Details.
g) [2 marks] The attribute @place of the Competition element as a constraint
referencing the Place element.
h) [2 marks] A local key that will prevent appearance of duplicate he_dancer
elements within the scope of a Competition_Dance element.
i) [2 marks] A local key that will prevent appearance of duplicate she_dancer
elements within the scope of a Competition_Dance element.
j) [5 marks] There is a rule that a dancer is not allowed to change partners
during a whole dancing competition. Can you make a constraint to enforce that
rule? Justify your answer properly.
k) [2 marks] Make a constraint that will prevent dance scores to be erroneously
recorded as being greater than 30. Store it in a new .xsd file under the name
dancingCompetition_Assert_15.xsd.
Note: Do not alter your dancingCompetiton_15.xml file to force it satisfy
your integrity constraints.
SWEN432/Assignment 3
4
continued
Question 3. Comparing ID/IDREF and Identity Constraints
[18 marks]
In this question, you are asked to analyze, and discuss differences in checking
abilities of ID/IDREF mechanisms versus Identity Constraint and Assert
mechanisms. To answer the question, you will use the following files:
 dancingCompetiton_15.dtd,
 dancingCompetiton_IC_15.xsd, and
 dancingCompetiton_Assert_15.xsd.
For each constraint you have defined in question 2 above, discus the ability of
ID/IDREF mechanisms to achieve the same checking functionality.
Support your claims by introducing appropriate errors in a version of the XML
dancingCompetiton_15.xml file and possibly needed changes into the
dancingCompetiton_15.dtd file. In your answers, show what you have done
and achieved.
Question 4. Curriculum.xsd
[15 marks]
You are asked to make an XML Schema schema that will describe structure,
rules, and constraints on XML documents containing data about curricula. A
curriculum contains data about courses and their prerequisites. Prerequisites are
courses. A course may have no prerequisite, but there may be courses that have
many prerequisites. Also, a course may be not a prerequisite for any other
course, but there are courses that are prerequisite for many other courses.
There is an example curriculum document given on the course Assignments
page.
You may copy it in your own directory, and use it to test your XML Schema
schema. This document contains data about some of 100, 200, and 300 level
courses, and their prerequisites. Note, this is just an example curriculum
document. In the real life, a curriculum may have many more levels. Your task is
to make an XML Schema schema that will describe any number of course levels.
Also, the Curriculum.xml document should be valid according to your XML
Schema schema.
SWEN432/Assignment 3
5
continued
Question 5. Structural Constraints
[10 marks]
In this question, you are asked to deal with structural constraints.
Let A, B, C, D, and E be the element names. Use the syntax of XML Schema to
translate the following DTD:
<!
<!
<!
<!
<!
ELEMENT
ELEMENT
ELEMENT
ELEMENT
ELEMENT
E
D
A
B
C
(D)+>
(A | B | C | (A, B) | (A, C) | (B, C)) >
EMPTY>
EMPTY>
EMPTY>
into an XML Schema. Call your XML Schema
structuralConstraint_15.xsd. Implement it and test it.
Submission Instruction:
Submit all your files electronically (including all .xml, .dtd, and .xsd files you
have produced as answers to questions or you used for testing), so that Pavle
can test your files using xmllint or Xerces2 Java. Submit a printed version
of your answers in the SWEN432 hand-in box on the second floor of the Cotton
Building. Whenever appropriate, include the xmllint output produced by using
–noout option instead of a whole document.
Please do not submit any .odt, .zip, or similar files. Also, do not submit your files
in toll directory tries. All files in the same directory is just fine.
Also, please do not use weird .xmlns definitions in your XML Schema files. Use
just what we discussed in lectures.
SWEN432/Assignment 3
6
continued