[Home] [By Thread] [By Date] [Recent Entries]

  • To: xml-dev@l...
  • Subject: key constraint question
  • From: Bill Riegel <BRiegel@l...>
  • Date: Fri, 16 May 2003 11:55:57 -0500

I am trying to define a serialized Database to XML, via a XML Schema.

Problem

Table A has two relations two Table B. One is required the other is
optional.

How do I define that the TableB with relationship="needed" is mandatory.

I can define a unique constraint under TableA that indicates that
TableB/primaryKey be unique. This would prohibit someone defining
Two TableB's with the same relationship, i.e. two needed or two optional.
  
But I do not know how to ensure there is a TableB with the relationship of
"needed".

Instance Document:

<TableA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="TestSchema.xsd">
  <primaryKey>xx</primaryKey>
  <TableB relationship="needed">
    <primaryKey>yy</primaryKey>
  </TableB>
  <TableB relationship="optional">
    <primaryKey>yy</primaryKey>
  </TableB>
</TableA>

Schema Document

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="TableA">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="primaryKey"/>
        <xs:element name="TableB" type="TableB_Type" maxOccurs="2"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="TableB_Type">
     <xs:sequence>
      <xs:element name="primaryKey" type="xs:string"/>
    </xs:sequence>
    <xs:attribute name="relationship">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:pattern value="needed|optional"/>
                  </xs:restriction>
                </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
</xs:schema>


Bill Riegel
LandMark Graphics
713-839-3388


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member