Chapter 13: XML: Extensive Markup Language
CHAPTER 13: XML: EXTENSIVE MARKUP LANGUAGE
Answers to Selected Exercises
13.7
<?xml version=“1.0” standalone=“yes” ?>
<Departments>
<Department>
<Dname>Research</Dname>
<Dnumber>5</Dnumber>
<Mgr_ssn>333445555</Mgr_ssn>
<Mgr_start_date>1988-05-22</Mgr_start_date>
<Dlocation>Bellaire</Dlocation>
<Dlocation>Sugarland</Dlocation>
<Dlocation>Houston</Dlocation>
</Department>
</Departments>
<Employees>
<Employee>
<Name>
<Fname>John</Fname>
<Minit>B</Minit>
<Lname>Smith</Lname>
</Name>
<Ssn>123456789</Ssn>
<Sex>M</Sex>
<Salary>30000</Salary>
<Bdate>1965-01-09</Bdate>
<Dno>5</Dno>
<Super_ssn>333445555<Super_ssn>
<Address>731 Fondren, Houston, TX</Address>
<WorksOn>
<Pno>1</Pno>
<Hours>7.5</Hours>
</WorksOn>
</Employee>
<Employee>
<Name>
<Fname>Franklin</Fname>
<Minit>T</Minit>
Chapter 13: XML: Extensive Markup Language
Copyright © 2016 Pearson Education, Inc., Hoboken NJ
<Lname>Wong</Lname>
</Name>
<Ssn>333445555</Ssn>
<Sex>M</Sex>
<Salary>40000</Salary>
<Bdate>1955-12-08</Bdate>
<Dno>5</Dno>
<Super_ssn>888665555<Super_ssn>
<Address>638 Voss, Houston, TX</Address>
<WorksOn>
<Pno>2</Pno>
<Hours>10.0</Hours>
</WorksOn>
<WorksOn>
<Pno>3</Pno>
<Hours>10.0</Hours>
</WorksOn>
<WorksOn>
<Pno>20</Pno>
<Hours>10.0</Hours>
</WorksOn>
</Employee>
</Employees>
<Projects>
<Project>
<Pname>ProductX</Pname>
<Hours>20.0</Hours>
</Worker>
</Project>
<Project>
<Pname>ProductY</Pname>
<Hours>7.5</Hours>
</Worker>
<Worker>
<Essn>453453453</Essn>
<Hours>20.0</Hours>
Copyright © 2016 Pearson Education, Inc., Hoboken NJ
<Hours>10.0</Hours>
</Worker>
</Project>
</Projects>
13.8
<!DOCTYPE Sections [
<!ELEMENT Sections(Section*)>
<!ELEMENT Section(Number,Year,Qtr,Course_number,Course_name,Student*)>
<!ELEMENT Student(Ssn,Name,Class,Grade)>
<!ELEMENT Number(#PCDATA)>
<!ELEMENT Year(#PCDATA)>
<!ELEMENT Grade(#PCDATA)>
]>
13.8.2)
<!DOCTYPE Students [
<!ELEMENT Students(Student*)>
13.9
<?xml version=“1.0” encoding=“UTF-8” ?>
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:annotation>
<xsd:documentation xml:lang=“en”>Library Schema</xsd:documentation>
</xsd:annotation>
Chapter 13: XML: Extensive Markup Language
<xsd:element name=“branch” type=“Branch” />
<xsd:element name=“borrower” type=“Borrower” />
</xsd:sequence>
</xsd:complexType>
</xsd:key>
<xsd:key name=“branchIDKey” >
<xsd:selector xpath=“branch” />
<xsd:field xpath=“branchID” />
</xsd:key>
<xsd:key name=“borrowerCardNoKey” >
<xsd:selector xpath=“borrower” />
<xsd:field xpath=“borrowerCardNo” />
</xsd:key>
<xsd:keyref name=“bookPublisherNameKeyRef” refer=“publisherNameKey” >
<xsd:selector xpath=“book” />
<xsd:field xpath=“bookPublisherName” />
</xsd:keyref>
<xsd:keyref name=“bookIsOwnedByBranchIDKeyRef” refer=“branchIDKey” >
<xsd:selector xpath=“book/bookIsOwnedBy” />
<xsd:field xpath=“branchID” />
</xsd:keyref>
<xsd:keyref name=“bookIsLoanedByBranchIDKeyRef” refer=“branchIDKey” >
<xsd:selector xpath=“book/bookIsLoanedBy” />
<xsd:field xpath=“borrowerCardNo” />
</xsd:keyref>
<xsd:keyref name=“branchOwnsBookIDKeyRef” refer=“bookIDKey” >
<xsd:selector xpath=“branch/branchOwns” />
<xsd:field xpath=“bookID” />
</xsd:keyref>
<xsd:keyref name=“branchLoansBookIDKeyRef” refer=“bookIDKey” >
<xsd:selector xpath=“branch/branchLoans” />
<xsd:field xpath=“bookID” />
</xsd:keyref>
<xsd:keyref name=“branchLoansBorrowerCardNoKeyRef”
refer=“borrowerCardNoKey” >
<xsd:selector xpath=“branch/branchLoans” />
<xsd:field xpath=“borrowerCardNo” />
>
<xsd:selector xpath=“borrower/borrowerBorrows” />
Chapter 13: XML: Extensive Markup Language
<xsd:field xpath=“branchID” />
</xsd:keyref>
<xsd:complexType name=“Book” >
<xsd:sequence>
<xsd:element name=“bookID” type=“xsd:string” />
<xsd:element name=“bookTitle” type=“xsd:string” />
</xsd:complexType>
<xsd:complexType name=“Publisher” >
<xsd:sequence>
<xsd:element name=“publisherName” type=“xsd:string” />
<xsd:element name=“publisherAddress” type=“xsd:string” />
<xsd:element name=“publisherPhone” type=“xsd:string” />
<xsd:element name=“branchOwns” type=“Owns” />
<xsd:element name=“branchLoans” type=“Loans” />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name=“Borrower” >
<xsd:sequence>
<xsd:element name=“borrowerCardNo” type=“xsd:string” />
<xsd:element name=“borrowerName” type=“xsd:string” />
<xsd:element name=“borrowerAddress” type=“xsd:string” />
<xsd:element name=“borrowerPhone” type=“xsd:string” />
<xsd:element name=“borrowerBorrows” type=“Borrows” />
</xsd:sequence>
<xsd:element name=“branchID” type=“xsd:string” />
<xsd:element name=“cardNo” type=“xsd:string” />
<xsd:element name=“dateOut” type=“xsd:date” />
<xsd:element name=“dueDate” type=“xsd:date” />
</xsd:sequence>
</xsd:complexType>
</xsd:sequence>
</xsd:complexType>
Chapter 13: XML: Extensive Markup Language
Copyright © 2016 Pearson Education, Inc., Hoboken NJ
LET $e := doc(www.company.com/info.xml) //employee
[employeeWorksOn/projectNumber = $p/projectNumber]
WHERE count($e) > 1
RETURN <res>
$p/projectName,
$p/projectDepartmentNumber,
<no_of_employees>count($e)</no_of_employees>,
<total_hours>sum($e/employeeWorksOn/hours)</total_hours>
</res>