这是否是声明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>
的更复杂的安排,我怀疑这种安排在这种情况下是过度的。
答案 0 :(得分:1)
实际上,你的XSD充满了各种各样的问题。尝试使用一个像样的XSD / XML编辑器,它应该比你想象的更多。
问题:
我将从示例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的推论可能并不总是令人满意......
答案 1 :(得分:0)
我不会尝试添加有关此特定架构的讨论。我只想说,即使在工具的帮助下,你也不应该尝试编写任何类型的模式,直到你更详细地研究了这种语言。这是一个非常复杂的规范。不要试图阅读W3C规范;但是请阅读关于这个主题的许多好书中的一本,例如Eric van der Vlist的那本书非常平易近人。它不是一种可以通过反复试验来学习的语言。