这是对 xsd:choice 的错误使用吗?
Is this an incorrect use of xsd:choice?
我正在 JavaScript 中编写一个程序,它读取 XSD,创建一个 HTML 表单,并将该表单导出到 XML。
为了做到这一点,我必须学习 XSD 的结构,但我对 xsd:choice
有疑问。
在给我的示例 XSD 文件中,我有这个:
<xsd:choice>
<xsd:sequence>
<xsd:element name="tagname1" type="pedidoInf:complexTypeName" />
</xsd:sequence>
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:element name="tagname2" type="pedidoInf:otherComplexTypeName" />
</xsd:sequence>
<xsd:sequence>
<xsd:element name="tagname3" type="pedidoInf:anotherComplexTypeName" />
</xsd:sequence>
</xsd:choice>
</xsd:sequence>
</xsd:choice>
不知道是我没有正确理解xsd:choice
,还是这段代码无缘无故使用了嵌套xsd:choice
。
上面的代码是不是完全一样:
<xsd:choice>
<xsd:sequence>
<xsd:element name="tagname1" type="pedidoInf:complexTypeName" />
</xsd:sequence>
<xsd:sequence>
<xsd:element name="tagname2" type="pedidoInf:otherComplexTypeName" />
</xsd:sequence>
<xsd:sequence>
<xsd:element name="tagname3" type="pedidoInf:anotherComplexTypeName" />
</xsd:sequence>
</xsd:choice>
标题问题:不,xsd:choice
的用法都不正确——它们只是比必须的更复杂。
(而且,是的,这两个 xsd:choice
构造是相同的。)
两者也等同于:
<xsd:choice>
<xsd:element name="tagname1" type="pedidoInf:complexTypeName" />
<xsd:element name="tagname2" type="pedidoInf:otherComplexTypeName" />
<xsd:element name="tagname3" type="pedidoInf:anotherComplexTypeName" />
</xsd:choice>
我正在 JavaScript 中编写一个程序,它读取 XSD,创建一个 HTML 表单,并将该表单导出到 XML。
为了做到这一点,我必须学习 XSD 的结构,但我对 xsd:choice
有疑问。
在给我的示例 XSD 文件中,我有这个:
<xsd:choice>
<xsd:sequence>
<xsd:element name="tagname1" type="pedidoInf:complexTypeName" />
</xsd:sequence>
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:element name="tagname2" type="pedidoInf:otherComplexTypeName" />
</xsd:sequence>
<xsd:sequence>
<xsd:element name="tagname3" type="pedidoInf:anotherComplexTypeName" />
</xsd:sequence>
</xsd:choice>
</xsd:sequence>
</xsd:choice>
不知道是我没有正确理解xsd:choice
,还是这段代码无缘无故使用了嵌套xsd:choice
。
上面的代码是不是完全一样:
<xsd:choice>
<xsd:sequence>
<xsd:element name="tagname1" type="pedidoInf:complexTypeName" />
</xsd:sequence>
<xsd:sequence>
<xsd:element name="tagname2" type="pedidoInf:otherComplexTypeName" />
</xsd:sequence>
<xsd:sequence>
<xsd:element name="tagname3" type="pedidoInf:anotherComplexTypeName" />
</xsd:sequence>
</xsd:choice>
标题问题:不,xsd:choice
的用法都不正确——它们只是比必须的更复杂。
(而且,是的,这两个 xsd:choice
构造是相同的。)
两者也等同于:
<xsd:choice>
<xsd:element name="tagname1" type="pedidoInf:complexTypeName" />
<xsd:element name="tagname2" type="pedidoInf:otherComplexTypeName" />
<xsd:element name="tagname3" type="pedidoInf:anotherComplexTypeName" />
</xsd:choice>