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