以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  [求助]为什麽Unique没有用啊?快发疯了!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=25314)


--  作者:Deniro
--  发布时间:12/12/2005 7:15:00 PM

--  [求助]为什麽Unique没有用啊?快发疯了!
请教一下各位高手先进,小弟这样订到底有什麽错误。
小弟需要所传回的资料中,每个客户编号只允许出现一次,但是用XMLSpy 2006怎麽样都说我的XML档没有问题。

请大家帮小弟看看

sales_recs.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:element name="sales_recs" type="sales_recsType">
  <xs:annotation>
   <xs:documentation>distributor sales records</xs:documentation>
  </xs:annotation>
 </xs:element>
 <xs:complexType name="sales_recsType">
  <xs:sequence>
   <xs:element name="dis_no" nillable="false">
    <xs:simpleType>
     <xs:restriction base="xs:decimal">
      <xs:totalDigits value="6"/>
      <xs:fractionDigits value="0"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
   <xs:element name="inv_date" nillable="false">
    <xs:simpleType>
     <xs:restriction base="xs:decimal">
      <xs:totalDigits value="8"/>
      <xs:fractionDigits value="0"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
   <xs:element name="cust_sales_recs" type="cust_sales_recsType" maxOccurs="unbounded">
    <xs:unique name="custnoUK">
     <xs:selector xpath="cust_sales_recs"/>
     <xs:field xpath="cust_no"/>
    </xs:unique>
   </xs:element>
  </xs:sequence>
 </xs:complexType>
 <xs:complexType name="cust_sales_recsType">
  <xs:sequence>
   <xs:element name="cust_no" nillable="false">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:maxLength value="5"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
   <xs:element name="cust_sale_rec" type="cust_sale_recType" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:complexType>
 <xs:complexType name="cust_sale_recType">
  <xs:sequence>
   <xs:element name="sku_no" nillable="false">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:maxLength value="11"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
   <xs:element name="sku_recs" type="sku_recsType" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:complexType>
 <xs:complexType name="sku_recsType">
  <xs:sequence>
   <xs:element name="amt" nillable="false">
    <xs:simpleType>
     <xs:restriction base="xs:decimal">
      <xs:totalDigits value="9"/>
      <xs:fractionDigits value="2"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
   <xs:element name="qty" nillable="false">
    <xs:simpleType>
     <xs:restriction base="xs:decimal">
      <xs:totalDigits value="9"/>
      <xs:fractionDigits value="2"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
   <xs:element name="currency" nillable="false">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:maxLength value="20"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>
</xs:schema>

sales_recs.xml
<sales_recs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="sales_recs.xsd">
 <dis_no>001</dis_no>
 <inv_date>20051209</inv_date>
 <cust_sales_recs>
  <cust_no>A01</cust_no>
  <cust_sale_rec>
   <sku_no>SKU001</sku_no>
   <sku_recs>
    <amt>10</amt>
    <qty>1</qty>
    <currency>NTD</currency>
   </sku_recs>
   <sku_recs>
    <amt>30</amt>
    <qty>3</qty>
    <currency>NTD</currency>
   </sku_recs>
  </cust_sale_rec>
  <cust_sale_rec>
   <sku_no>SKU002</sku_no>
   <sku_recs>
    <amt>20</amt>
    <qty>10</qty>
    <currency>JPN</currency>
   </sku_recs>
  </cust_sale_rec>
 </cust_sales_recs>
 <cust_sales_recs>
  <cust_no>A01</cust_no>
  <cust_sale_rec>
   <sku_no/>
   <sku_recs>
    <amt>12</amt>
    <qty>2</qty>
    <currency>USD</currency>
   </sku_recs>
  </cust_sale_rec>
 </cust_sales_recs>
 <cust_sales_recs>
  <cust_no>A01</cust_no>
  <cust_sale_rec>
   <sku_no/>
   <sku_recs>
    <amt>1</amt>
    <qty>1</qty>
    <currency>1</currency>
   </sku_recs>
  </cust_sale_rec>
 </cust_sales_recs>
</sales_recs>


--  作者:98900969r
--  发布时间:12/12/2005 7:55:00 PM

--  
注意约束范围。要在sales_recs的范围内约束cust_sales_recs,就要把unique写在sales_recs之内。
 <xs:element name="sales_recs" type="sales_recsType">
  <xs:annotation>
   <xs:documentation>distributor sales records</xs:documentation>
  </xs:annotation>
  <xs:unique name="custnoUK">
   <xs:selector xpath="cust_sales_recs"/>
   <xs:field xpath="cust_no"/>
  </xs:unique>
 </xs:element>



--  作者:Deniro
--  发布时间:12/12/2005 11:53:00 PM

--  
真是太感激了!
明天终於可以交差了。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms