如何在xsd中定义特定的数字?

时间:2012-04-06 12:21:22

标签: xml xsd

我正在研究xsd规范(对于一个简单的游戏;)),它具有该规范:

我有一个Elem players,其属性为number,表示玩家的数量(1 and 4之间的数字)。作为childelems,它包含零到四个screenname元素的元素。这些元素具有播放器屏幕名称文本内容和属性,表示游戏编号的结束(1 and 4之间的数字)。

我的大问题是屏幕名称和xsd中典型的Intervall? 那怎么办?

问候和thx提前

2 个答案:

答案 0 :(得分:1)

我认为这是你所描述的:

<players number="2">
    <screenname endofgame="3">player screenname text content</screenname>
</players>

这将是一个自动生成的XSD:

<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="players">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="screenname">
          <xsd:complexType>
            <xsd:simpleContent>
              <xsd:extension base="xsd:string">
                <xsd:attribute name="endofgame" type="xsd:unsignedByte" use="required" />
              </xsd:extension>
            </xsd:simpleContent>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="number" type="xsd:unsignedByte" use="required" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

这将是一个有其他限制的问题,如上所述:a num between 1 and 4zero to four screenname elements。通过查看之前/之后,您应该了解哪一个是哪个。

<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="players">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="screenname" minOccurs="0" maxOccurs="4">
          <xsd:complexType>
            <xsd:simpleContent>
              <xsd:extension base="xsd:string">
                <xsd:attribute name="endofgame" type="Int1to4" use="required" />
              </xsd:extension>
            </xsd:simpleContent>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="number" type="Int1to4" use="required" />
    </xsd:complexType>
  </xsd:element>
  <xsd:simpleType name="Int1to4">
    <xsd:restriction base="xsd:int">
      <xsd:minInclusive value="1"/>
      <xsd:maxInclusive value="4"/>
    </xsd:restriction>  
  </xsd:simpleType> 
</xsd:schema>

答案 1 :(得分:0)

要指定元素的重复发生量,需要使用minOccurs和maxOccurs属性。