我需要为xml创建一个xsd,其中有许多名称列和行的元素。
请建议XSD,我已经将cols作为无界限,我应该如何制作元素行。
<cols>
<id>a</id>
<type>string</type>
</cols>
<cols>
<id>b</id>
<type>string</type>
</cols>
<cols>
<id>c</id>
<type>number</type>
</cols>
<rows>
<c>
<v>a</v>
</c>
<c>
<v>b</v>
</c>
<c>
<v>3</v>
</c>
</rows>
<rows>
<c>
<v>c</v>
答案 0 :(得分:0)
您发布的xml示例对任何架构都无效。事实上,xml永远不应该有多个根节点(如你的例子所示)。您需要将它们包装在单个根节点中。
在回答您的问题时,xsd不支持以您假设的节点集中节点数计数为条件的属性值。你能做的最好就是使用无限制的maxOccurs。
您想要的架构看起来与此类似:
<xs:schema xmlns="http://mynamespace" targetNamespace="http://mynamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="cols">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string" />
<xs:element name="type" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" name="rows">
<xs:complexType>
<xs:sequence>
<xs:element name="c">
<xs:complexType>
<xs:sequence>
<xs:element name="v" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
希望这有助于你