Workshop
This workshop tests whether you understand the concepts discussed today. It's a good idea to make sure you can answer these questions before pressing on to tomorrow's work. Answers to the quiz can be found in Appendix A, "Quiz Answers."
Quiz
-
What's wrong with this XML document?
-
Where do you see a problem with this XML document?
-
What error is in this XML document?
-
There's a problem in this XML document, too. What is it?
-
What's wrong with this XML document?
<?xml version = "1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE document [ <!ELEMENT document (employee)*> <!ELEMENT employee (hiredate, name)> ]> <document> <employee> <hiredate>October 15, 2005</hiredate> <name> Grace Kelly </name> </employee> </document>
<?xml version = "1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE document [ <!ELEMENT document (employee)*> <!ELEMENT employee (name, hiredate)> <!ELEMENT name (#PCDATA)> <!ELEMENT hiredate (#PCDATA)> ]> <document> <employee> <hiredate>October 15, 2005</hiredate> <name> Grace Kelly </name> </employee> </document>
<?xml version = "1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE document [ <!ELEMENT document (employee)*> <!ELEMENT employee (hiredate+ | name+)> <!ELEMENT hiredate (#PCDATA)> <!ELEMENT name (#PCDATA)> ]> <document> <employee> <hiredate>October 15, 2005</hiredate> <name> Grace Kelly </name> </employee> </document>
<?xml version = "1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE document [ <!ELEMENT document (employee)?> <!ELEMENT employee (hiredate+, name*, phone+)> <!ELEMENT hiredate (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT phone (#PCDATA)> ]> <document> <employee> <hiredate>October 15, 2005</hiredate> <name> Grace Kelly </name> <phone> 555.8888 </phone> </employee> <employee> <hiredate>October 16, 2005</hiredate> <name> Myrna Loy </name> <name> Muriel Blandings </name> <phone> 555.9999 </phone> </employee> </document>
<?xml version = "1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE document SYSTEM "employee.dtd"> <document> <employee> <name> Grace Kelly </name> <hiredate>October 15, 2005</hiredate> </employee> </document>
Exercises
-
Create a new XML document that holds the names of your relatives by using elements such as <brother>, <sister>, <mother>, and <father>, as well as <name>, <age>, and <address> elements. Next, add a DTD to the document and use an XML validator such as the Scholarly Technology Group's XML validator, at http://www.stg.brown.edu/service/xmlvalid, to check whether your document is valid. Alternatively, add to the well-formed XML document you created in Exercise 1 at the end of yesterday's discussion a DTD that holds the available menu items and their prices at a favorite restaurant of yours.
-
Convert the XML document you created in Exercise 1 to make the DTD external. If you can upload the external DTD file to a Web server and include its URI in the <!DOCTYPE> element (for example, <!DOCTYPE document SYSTEM "http://www.server.com/username/relatives.dtd">), use an online XML validator such as the Scholarly Technology Group's XML validator to check the new document's validity.