Recursive Data Models in XML: Building Relationship Structures
Explore XML schemas for creating recursive relationships in data models. Learn how to define complex relationships between entities using XSD elements and types.
Recursive Data Models in XML: Building Relationship Structures
E N D
Presentation Transcript
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:element name="monarchs"> <xsd:complexType> <xsd:sequence> <xsd:element name="monarch" type="monarchType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="monarchType"> <xsd:sequence> <xsd:element name="monarchID" type="xsd:ID"/> <xsd:element name="monarchName" type="xsd:string"/> <xsd:element name="monarchNumber" type="xsd:string"/> <xsd:element name="monarchType" type="xsd:string"/> <xsd:element name="monarchBegin" type="xsd:date"/> <xsd:element name="predecessor" type="xsd:IDREF" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="president.xsl"?> <monarchs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="monarch.xsd"> <monarch> <monarchID>m1</monarchID> <monarchName>William</monarchName> <monarchNumber>IV</monarchNumber> <monarchType>King</monarchType> <monarchBegin>1830-06-26</monarchBegin> </monarch> <monarch> <monarchID>m2</monarchID> <monarchName>Victoria</monarchName> <monarchNumber>I</monarchNumber> <monarchType>Queen</monarchType> <monarchBegin>1837-06-20</monarchBegin> <predecessor>m1</predecessor> </monarch> </monarchs>
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified"> <xsd:element name="employees"> <xsd:complexType> <xsd:sequence> <xsd:element name="employee" type="empType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="empType"> <xsd:sequence> <xsd:element name="empID" type="xsd:ID"/> <xsd:element name="empFirstName" type="xsd:string"/> <xsd:element name="empSalary" type="xsd:integer"/> <xsd:element name="subordinates" type="subType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="subType"> <xsd:sequence> <xsd:element name="subordinate" type="xsd:IDREF"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="employee.xsl"?> <employees xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="employee.xsd"> <employee> <empID>e1</empID> <empFirstName>Alice</empFirstName> <empSalary>75000</empSalary> <subordinates> <subordinate>e2</subordinate> </subordinates> </employee> <employee> <empID>e2</empID> <empFirstName>Ned</empFirstName> <empSalary>45000</empSalary> <subordinates> <subordinate>e3</subordinate> </subordinates> <subordinates> <subordinate>e4</subordinate> </subordinates> </employee> <employee> <empID>e3</empID> <empFirstName>Andrew</empFirstName> <empSalary>25000</empSalary> </employee> <employee> <empID>e4</empID> <empFirstName>Clare</empFirstName> <empSalary>25000</empSalary> </employee> </employees>
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified"> <xsd:element name="products"> <xsd:complexType> <xsd:sequence> <xsd:element name="product" type="prodType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="prodType"> <xsd:sequence> <xsd:element name="prodID" type="xsd:ID"/> <xsd:element name="prodName" type="xsd:string"/> <xsd:element name="prodCost" type="xsd:decimal" minOccurs="0"/> <xsd:element name="prodPrice" type="xsd:decimal"/> <xsd:element name="components" type="componentsType" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="componentsType"> <xsd:sequence> <xsd:element name="component" type="xsd:IDREF"/> <xsd:element name="componentqty" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="product.xsl"?> <products xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="product.xsd"> <product> <prodID>p1000</prodID> <prodName>Animal photography kit</prodName> <prodPrice>725</prodPrice> <components> <component>p101</component> <componentqty>1</componentqty> </components> </product> <product> <prodID>p101</prodID> <prodName>Camera case</prodName> <prodCost>150</prodCost> <prodPrice>300</prodPrice> </product> </products>