You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by bu...@apache.org on 2002/02/10 00:18:45 UTC

DO NOT REPLY [Bug 6344] New: - KEY uniqueness not enforced during validation

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6344>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6344

KEY uniqueness not enforced during validation

           Summary: KEY uniqueness not enforced during validation
           Product: Xerces-J
           Version: 1.4.4
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Major
          Priority: Other
         Component: Schema-Datatypes
        AssignedTo: xerces-j-dev@xml.apache.org
        ReportedBy: apache@polyglotinc.com


When implicitly validating my XML doc against my Schema doc via the SAXCount and
DOMCount example programs, I get no errors found/reported even tho I am
violating the uniqueness constraint of my "KEY" fields.
--- XML file ---
<?xml version="1.0"?>
<products_by_vendor
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="gg_products.xsd">
  <vendor id="conners">
    <vendor_name>Conners Chair Company</vendor_name>
    <product>
        <gg_sku>GG001</gg_sku>
        <vendor_sku>QA3452</vendor_sku>
        <short_desc>Queen Anne Chair</short_desc>
        <price type="cost">$85.00</price>
    </product>
    <product>
	<gg_sku>GG001</gg_sku>
        <vendor_sku>RC2342</vendor_sku>
        <short_desc>Early American Rocking Chair</short_desc>
        <price>120.00</price>
        <inventory location="warehouse">40</inventory>
    </product>
  </vendor>
</products_by_vendor>

--- SCHEMA ---
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- NOTE: these definitions are in "top-down" order. -->

<xs:element name="products_by_vendor">
  <xs:complexType>
    <xs:sequence>
        <xs:element ref="vendor" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:key name="PK">
    <xs:selector xpath="product"/>
    <xs:field xpath="gg_sku"/>
  </xs:key>
</xs:element>

<xs:element name="vendor">
  <xs:complexType>
    <xs:sequence>
     <xs:element name="vendor_name" type="xs:string" />

     <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="phone"   type="xs:string"/>
      <xs:element name="fax"     type="xs:string"/>
      <xs:element name="website" type="xs:anyURI"/>
      <xs:element name="address" type="AddressType"/>
      <xs:element name="email"   type="xs:string"/>
     </xs:choice>

     <xs:element ref="suite"   minOccurs="0" maxOccurs="unbounded" />
     <xs:element ref="product" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="id" type="xs:ID" use="required" />
  </xs:complexType>
</xs:element>

<xs:element name="suite">
  <xs:complexType>
    <xs:sequence>
	 <xs:group   ref="skuData" />
     <xs:element ref="product"   minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="product">
  <xs:complexType>
    <xs:sequence>
     <xs:element name="gg_sku" type="GG_SKU" />
	 <xs:group   ref="skuData" />
     <xs:element ref="version"   minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="version">
  <xs:complexType>
    <xs:sequence>
	 <xs:group  ref="skuData" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

<!-- GROUP definitions -->

<xs:group name="skuData">
   <xs:sequence>
     <xs:element name="vendor_sku" type="xs:string" minOccurs="0" maxOccurs="1" />
     <xs:element name="short_desc" type="xs:string" />
     <xs:element name="long_desc"  type="xs:string" minOccurs="0" maxOccurs="1" />
     <xs:element ref="price"     minOccurs="0" maxOccurs="unbounded" />
     <xs:element ref="inventory" minOccurs="0" maxOccurs="unbounded" />
   </xs:sequence>
</xs:group>

<!-- "primitive" definitions that are referenced above -->

<xs:element name="price">
  <xs:complexType>
    <xs:simpleContent>
	<xs:extension base="MoneyType">
      <xs:attribute name="type" type="PriceType" default="retail" />
	</xs:extension>
	</xs:simpleContent>
  </xs:complexType>
</xs:element>

<xs:element name="inventory">
  <xs:complexType>
    <xs:simpleContent>
	<xs:extension base="xs:integer">
      <xs:attribute name="location" type="LocationType" default="showroom" />
	</xs:extension>
	</xs:simpleContent>
  </xs:complexType>
</xs:element>

<xs:simpleType name="PriceType">
 <xs:restriction base="xs:NMTOKEN">
     <xs:enumeration value="cost"/>
     <xs:enumeration value="sale"/>
     <xs:enumeration value="retail"/>
 </xs:restriction>
</xs:simpleType>

<xs:simpleType name="LocationType">
 <xs:restriction base="xs:NMTOKEN">
     <xs:enumeration value="warehouse"/>
     <xs:enumeration value="showroom"/>
 </xs:restriction>
</xs:simpleType>

<xs:simpleType name="GG_SKU">
   <xs:restriction base="xs:string">
     <xs:pattern value="GG\d{3}"/>
   </xs:restriction>
</xs:simpleType>

<xs:complexType name="AddressType">
   <xs:attribute name="state"  type="xs:string"/>
   <xs:attribute name="city"   type="xs:string"/>
   <xs:attribute name="zip"    type="xs:decimal"/>
   <xs:attribute name="street" type="xs:string"/>
</xs:complexType>

<xs:simpleType name="MoneyType">
    <xs:restriction base="xs:string">
        <xs:pattern value="\p{Sc}?\p{Nd}+(\.\p{Nd}\p{Nd})?"/>
    </xs:restriction>
</xs:simpleType>

</xs:schema>

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org