以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  郁闷,为什么父type 用了 all, 子type extension继承时就出错了呢 ???  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=73305)


--  作者:makeup1984
--  发布时间:3/20/2009 3:01:00 PM

--  郁闷,为什么父type 用了 all, 子type extension继承时就出错了呢 ???
刚学Xml没多久,准备用XML描述一个 UI的界面

Schema 一个TListBox继承自TControl的定义如下:

 <!-- Base Abstract Control  -->
 <xs:complexType name="TControl" abstract="true">
  <xs:all>
   <xs:element name="Location" type="TLocation"/>
   <xs:element name="HighFrequency" type="xs:boolean"/>
   <xs:element name="Script" type="TLuaScript"/>
   <xs:element name="ForcusHightlight" type="TForcusHighlight" minOccurs="0"/>
   <xs:element name="Background" type="TBackGround" minOccurs="0"/>
   <xs:element name="Visible" type="xs:boolean" default="true" minOccurs="0"/>
   <xs:element name="Transparency" type="xs:unsignedByte" default="0" minOccurs="0"/>
   <xs:element name="Layer" type="TControlLayer" default="Layer0" minOccurs="0"/>
  </xs:all>
 </xs:complexType>
 
 <!-- ListBox -->
 <xs:complexType name="TListBox">
  <xs:complexContent>
   <xs:extension base="TControl">
    <xs:all>
     <xs:element name="SeletBarColor" type="TColor"/>
    </xs:all>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>

上面的定义出错了,没看懂编辑器那出错信息...
本来在TControl 里面用all来包子元素是方便其他人做skin时可以乱序来定义子元素
而用sequence倒是可以给子类extension ,但是子元素必需要按顺序来出现.
也可以在sequence后加上choice实现乱序,但是又不能保证子元素只出一次.

实在想不出方案了.请各位高手指点一下该怎么做?? 谢谢!


--  作者:makeup1984
--  发布时间:3/25/2009 4:42:00 PM

--  
UP下
高手都跑哪了呢?
--  作者:hexun831012
--  发布时间:4/6/2009 9:14:00 PM

--  
看你的文档定义,用all好像不合适
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
156.250ms