xml - XSD 嵌套元素

标签 xml parsing xsd xmllint

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="game">
    <xsd:complexType>
        <xsd:all>
            <xsd:element name="info" type="infoType" minOccurs="0"/>
        </xsd:all>
    </xsd:complexType>
</xsd:element>
    <xsd:complexType name="infoType">
       <xsd:sequence>
        <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="players" minOccurs="0" maxOccurs="1">
            <xsd:complexType mixed="true">
                <xsd:attribute name= "number" type="playernum"/>

                <!-- xsd:element name="screenname" type="xsd:string">
                    <xsd:complexType>
                    <xsd:attribute name= "player" type="playernum"/>
                    </xsd:complexType>
                </xsd:element -->

            </xsd:complexType>
        </xsd:element>
       </xsd:sequence>
    </xsd:complexType>
<xsd:simpleType name="playernum">
  <xsd:restriction base="xsd:int">
    <xsd:minInclusive value="1"/>
    <xsd:maxInclusive value="4"/>
  </xsd:restriction>
</xsd:simpleType>    
</xsd:schema>infoType

有问题的代码是注释过的代码。

它产生错误输出:

game.xsd:26: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}complexType': The content is not valid. Expected is (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?)))).

但是有问题的元素包含一个complextType,默认情况下它具有complexContent。 非常欢迎任何帮助,提前致谢。

最佳答案

我想说你缺少一个xsd:sequence,而且screenname不能是xsd:stringcomplexType 同时 - 您必须选择其中之一。

这可能就是您所需要的:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="game">
    <xsd:complexType>
      <xsd:all>
        <xsd:element name="info" type="infoType" minOccurs="0"/>
      </xsd:all>
    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="infoType">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
      <xsd:element name="players" minOccurs="0" maxOccurs="1">
        <xsd:complexType mixed="true">
          <xsd:sequence>
            <xsd:element name="screenname">
              <xsd:complexType mixed="true">
                <xsd:attribute name= "player" type="playernum"/>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
          <xsd:attribute name= "number" type="playernum"/>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:simpleType name="playernum">
    <xsd:restriction base="xsd:int">
      <xsd:minInclusive value="1"/>
      <xsd:maxInclusive value="4"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>

关于xml - XSD 嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829510/

相关文章:

mysql - XML 平面文件与关系数据库后端

android - 获取图像

.net - 如何修复 Visual Studio 生成的用于处理锯齿状数组的 Web 引用代理?

c# - 从 XML 架构文件 (xsd) 生成 C# 9 类,包括现代功能(可空值 moSTLy)

android数据绑定(bind)不起作用

android - 根据屏幕设备大小调整图像按钮大小

python - 如何将函数定义作为字符串传递给 python 脚本

用于提取与函数相关的 C 文档注释的 Python 代码

c# - 架构与 xsd :any - XmlReader validation error

Android - RecyclerView 列表项和父项之间的间距相等