以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  嵌套定义时出错,请教高手  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=46171)


--  作者:calmness
--  发布时间:4/27/2007 9:46:00 PM

--  嵌套定义时出错,请教高手
在使用嵌套类型时,嵌套类型主要定义如下
以下内容为程序代码:

 <xs:complexType name="propertyType" >
  <xs:sequence>
   <xs:element name="value" minOccurs="0" maxOccurs="1" type="xs:string"/>
   <xs:element name="ref"  minOccurs="0"  maxOccurs="1" type="xs:string"/>
   <xs:element name="list" minOccurs="0"  maxOccurs="1">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="property" type="propertyType" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
  <xs:attribute name="name"  type="namerule" use="required"/>
  <xs:attribute name="value" type="xs:string"/>
  <xs:attribute name="ref" type="xs:string"/>
 </xs:complexType>

这个定义为单独一个文件,主schema中的一个property元素的类型定义为该类型,使用如下XML测试:
以下内容为程序代码:

<easyjf-web xmlns="http://www.easyjfweb.com/easyjf-web"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.easyjfweb.com/easyjf-web easyjf-web.xsd">
 <modules>
  <module>
    <property name="aaa">
    <value>123</value>
  </property>
  </module>
 </modules>
</easyjf-web>

其中property元素就为该类型,但是当该元素中不包含任何元素时,可以正常保存,然而只要添加一个被包含元素,例如上面的<value>,就会报错,错误显示property中必须包含<value>,<ref>,<list>元素,但是这三种元素我都是定义为minOccurs="0"的,而且如果我不在property中包含任何元素它就不会报错,但是随便写一个元素进去,它就会显示这三个元素是必须的,麻烦高手解答一下原因,谢谢。


--  作者:gemingke
--  发布时间:4/28/2007 12:30:00 AM

--  
你这样就变成无穷嵌套了
不可以把list放在外面吗?而且你这样的结构,从逻辑上也讲不通啊
--  作者:calmness
--  发布时间:4/28/2007 3:51:00 PM

--  
我的目的就是做无穷嵌套啊,这样做不到吗?
--  作者:gemingke
--  发布时间:4/28/2007 6:59:00 PM

--  
绝对不可以
--  作者:calmness
--  发布时间:4/29/2007 9:55:00 PM

--  
但是问题是我有这种需求啊?那该如何解决?
--  作者:gemingke
--  发布时间:4/30/2007 12:54:00 PM

--  
啊?现实中需要无穷嵌套,按道理说应该不可能啊
你能 详细说说么?
--  作者:gogy
--  发布时间:4/30/2007 7:28:00 PM

--  
不同的处理工具会有不同的错误提示。你用的是什么?
我用Stylus studio 和 XMLSpy试过,Stulus可以通过,XMLSpy提示,不能引用未定义的propertyType。这大概是因为在内部调用自己的结果吧。

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