复杂类型和XSD

时间:2009-07-22 20:46:43

标签: xml xsd

编辑:我认为我没有很好地问这个问题。我完全重新措辞了

全部: 我试图在XSD中表示以下XML(我正在使用Visual Studio XSD编辑器,因为我真的不太了解XSD)。

Here's the XML:

<TheParentNode>
  <AnElement ID="x">123</AnElement>
</TheParentNode>

我想指定AnElement的值必须是数字。我还想将一些属性放入AnElement。

XSD应该是什么样的?

在Visual Studio设计器中,我可以看到如何使AnElement成为一个复杂类型,这似乎是为它定义属性的唯一方法。但是,如果我这样做,我看不到指定AnElement的值必须是数字的方法。

我需要使用复杂类型吗?你的XSD代码会是什么样的?

2 个答案:

答案 0 :(得分:2)

您需要使用complexType

定义simpleContent
    <xs:element name="AnElement">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:int">
            <xs:attribute name="ID" type="xs:string" />
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>

这应该可以解决问题。我担心这是实现这一目标的唯一途径。这真的很糟糕吗?

<强>更新
更新后,这是您需要的XSD:

<xs:schema id="TheParentNode" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="TheParentNode">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AnElement">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:int">
                <xs:attribute name="ID" type="xs:string" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

您知道我希望如果您在Visual Studio中打开XML文件,您可以转到“XML”菜单并从中选择“Create schema”吗?这确实为您的XSD文件提供了良好的开端。

马克

答案 1 :(得分:-1)

尝试使用常规快速值设置限制选项怎么样? restriction and pattern xsd tags

 <xs:element name="AnElement">
     <xs:simpleType>
        <xs:restriction base="xs:integer">
        </xs:restriction>
     </xs:simpleType>
 </xs:element>

这意味着它只允许整数为零或更多位。

我希望它有所帮助。

虎。