以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML工具及XML开发环境 』  (http://bbs.xml.org.cn/list.asp?boardid=7)
----  [求助]牛人请指教:XMLSpy2005与XMLSpy2004咋验证结果不一?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=7&rootid=&id=21473)


--  作者:Violentpig
--  发布时间:8/25/2005 11:26:00 PM

--  [求助]牛人请指教:XMLSpy2005与XMLSpy2004咋验证结果不一?
小弟不才,对XML Schema了解虽然算不上炉火纯青,但自认为掌握的还可以。

一日用XMLSpy Enterprise 2005 r3验证一300多行的XML Schema,发现死活验证不过关。历经数日逐字核查仍找不出半点错误。偶然间,心血来潮,换用XMLSpy Enterprise 2004 r3验证,居然毫无错误。满腹狐疑之际,遂拟多例对2005 r3进行验证,竟发现如下问题。

Sample 1:简单的刻面测试-minOccurs

Schema如下:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:element name="test" type="testType"/>
 <xs:complexType name="testType">
  <xs:sequence>
   <xs:element name="testElement" type="xs:string" minOccurs="5" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:complexType>
</xs:schema>

实例如下:

<?xml version="1.0" encoding="UTF-8"?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\Downloads\test.xsd">
 <testElement>1</testElement>
 <testElement>2</testElement>
 <testElement>3</testElement>
 <testElement>4</testElement>
</test>

显然,实例中testElement个数不够minOccurs中限定的5个,但该实例居然在2005中验证通过!!2004中实例没有验证通过,且错误提示正确。
(这个应该是个显然的错误吧......)

Sample 2:group+sequence的理解

<?xml version="1.0" encoding="GB2312"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:element name="aa">
  <xs:complexType>
   <xs:group ref="test"/>
  </xs:complexType>
 </xs:element>
 <xs:group name="test">
  <xs:sequence maxOccurs="unbounded">
   <xs:element name="bbb" type="xs:string"/>
  </xs:sequence>
 </xs:group> 
</xs:schema>

以上Schema在2005r3中死活通不过,而在2004r3中验证通过。经翻阅相关规范,发现2005的判断是正确的。(这让那些使用2004的人咋办......)


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
203.125ms