0

这是否是声明 XML 元素Cluster包含(1 个或多个实例)单个 XML 元素类型的正确方法Node

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Cluster" type="Node" minOccurs=2>
    </xs:element>

    <xs:element name="Node"/>
    </xs:element>
</xs:schema>

我正在学习的教科书和我遇到的所有在线资源都专门讨论了涉及 的更复杂的安排<xs:complex>,我怀疑在这种情况下这太过分了。

4

2 回答 2

1

实际上,您的 XSD 充满了各种各样的问题。尝试使用一个像样的 XSD/XML 编辑器,它应该比你想象的更能帮助你。

问题:

  • 基数属性(min/max Occurs)不适用于全局元素声明。
  • 如果您引用一个类型,您应该在某处对该类型进行简单或复杂的定义。

我将从一个示例 XML 开始,因为您已经知道:

<Cluster>
    <Node>node1</Node>
    <Node>node2</Node>
</Cluster>

然后您可以使用像样的工具来生成 XSD,这是一个比您刚刚可视化的简单 XML 更复杂的主题:

<?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="Cluster">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element maxOccurs="unbounded" name="Node" type="xsd:string" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

在那里您可以看到 maxOccurs,然后将其更改为您想要的值。随着您对 XSD 语法越来越熟悉,您可以开始将工作中的 XSD 编辑成更有意义的东西;最后,XSD 推断可能并不总是令人愉悦……

于 2012-04-04T13:44:48.047 回答
0

我不会尝试添加关于这个特定模式的讨论。我只想说,即使在工具的帮助下,您也不应该尝试编写任何类型的模式,直到您更详细地研究了该语言。这是一个非常复杂的规范。不要试图阅读 W3C 规范;但一定要阅读有关该主题的众多好书之一,例如 Eric van der Vlist 的一本非常平易近人。它不是一种可以通过反复试验来学习的语言。

于 2012-04-04T15:55:25.080 回答