是否可以为具有maxOccurs =“unbounded”的元素创建XSD架构,该元素接受不同的值类型作为其项目?例如:
<myArray>
<A>first</A>
<A>second</A>
<A>third</A>
<B>fourth</B>
<B>fifth</B>
</myArray>
如果没有,是否是非标准类型的XML结构设计?
同样在XHTML中:
<body>
<p></p>
<br />
<img />
</body>
这是否意味着xhtml不是标准的?
更新: maxOccurs =“unbounded”以前被称为“数组元素”
答案 0 :(得分:0)
XSD不会将任何类别的元素标识为“数组元素”,因此您的问题的含义并不完全清楚。 XSD中没有要求元素的所有子元素具有相同的名称或相同的类型。
XSD确实需要通过“元素声明一致性”约束,任何两个具有相同名称的兄弟姐妹具有相同的类型(或兼容类型,其中“兼容性”由一些相当密集和复杂的散文定义)。
由于异构数组在某些编程语言中会造成困难,我可以想象一些程序员想要设计他们的XML以避免构造会映射到异构数组。但是XHTML的设计绝不是非标准的。
答案 1 :(得分:0)
好吧,我通过使用xsd refs找到了方法。 结论:有可能XHTML是标准的。
“myArray”的架构:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="A" type="xs:string" />
<xs:element name="B" type="xs:string" />
<xs:element name="myArray">
<xs:complexType>
<xs:sequence>
<xs:element ref="A" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="B" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>