以文本方式查看主题

-  中文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=44456)


--  作者:descartes
--  发布时间:3/26/2007 5:04:00 PM

--  奇怪的问题
我在vs2005下创建如下的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<Data name="ggg">
  <Item name="3">hello</Item>
  <Good>44</Good>
  <Item name="3">thanks</Item>
</Data>

我写的schema文件如下:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Data">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Item">
          <xs:complexType>
            <xs:sequence>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" />
          </xs:complexType>
        </xs:element>
        <xs:element name="Good">
          <xs:simpleType>
            <xs:restriction base="xs:string" />
          </xs:simpleType>
        </xs:element>
        <xs:element name="Item">
          <xs:complexType>
            <xs:sequence />
            <xs:attribute name="name" type="xs:string" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

为什么VS的IDE提示红色的那一行有这样的问题:warning:Elements with the same name and in the same scope must have the same type.


--  作者:gemingke
--  发布时间:3/26/2007 5:52:00 PM

--  
没有必要定义两个 同样的元素。第二个引用第一个就可以了

--  作者:descartes
--  发布时间:3/26/2007 6:02:00 PM

--  
我把schema改成下面这样,还是有那个问题,哪位大虾帮帮忙啊?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Data">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Item">
          <xs:complexType>
            <xs:sequence />
            <xs:attribute name="name" type="xs:string" />
          </xs:complexType>
        </xs:element>
        <xs:element name="Good" type="xs:integer">
        </xs:element>
        <xs:element ref="Item">
        </xs:element>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" />
    </xs:complexType>
  </xs:element>
</xs:schema>
--  作者:gemingke
--  发布时间:3/28/2007 4:56:00 PM

--  
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Data">
    <xs:complexType>
      <xs:sequence>
           <xs:element ref="Item"/>
        <xs:element name="Good" type="xs:integer"/>
         <xs:element ref="Item"/>
      
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" />
    </xs:complexType>
  </xs:element>
<xs:element name="Item">
          <xs:complexType>
            <xs:sequence />
            <xs:attribute name="name" type="xs:string" />
          </xs:complexType>
        </xs:element>
</xs:schema>
--  作者:descartes
--  发布时间:3/28/2007 7:05:00 PM

--  
多谢大虾,还有一个问题,就是我拿上面的schema验证那个xml文件时,为什么总是提示The element cannot contain text. Content model is empty呢?也就是说<Item name="3">hello</Item>这样的元素如果有属性就不能包含值吗?请大虾救人救到底,再次谢了。
--  作者:gemingke
--  发布时间:3/28/2007 7:36:00 PM

--  
如果要使item能够有值,须将compelxType换成simpleType,并且指定item的值的类型
--  作者:descartes
--  发布时间:3/28/2007 7:53:00 PM

--  
但是如果这样的话,就没法定义name="Item"这个属性了,大虾可有妙计?
--  作者:gemingke
--  发布时间:3/29/2007 1:25:00 PM

--  
定义name="Item"这个属性?
--  作者:lao_cai
--  发布时间:4/12/2007 10:21:00 AM

--  
Item元素可以由字符串简单类型扩展派生
--  作者:lao_cai
--  发布时间:4/12/2007 10:21:00 AM

--  
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Data">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Item"/>
        <xs:element name="Good" type="xs:integer"/>
         <xs:element ref="Item"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" />
    </xs:complexType>
  </xs:element>
 <xs:element name="Item">
          <xs:complexType>
            <xs:simpleContent>
            <xs:extension base="xs:string">
            <xs:attribute name="name" type="xs:string" />
            </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
    </xs:element>
</xs:schema>
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms