xml 架构 xsd:all 和另一个元素
xml schema xsd:all and one another element
我有 3 个元素都是必需的,但可以按任何顺序排列,在它们之后有一个元素是可选的,并且 maxOccurs 是无限的。 xsd怎么写?
<!-- pid is required, unique (positive) integer
(can be used as a key for persons);
the name, surname, salary elts. can be ordered in any order -->
<person pid="1">
<!-- name is required, non-empty string -->
<name>Pavel</name>
<!-- surname is required, non-empty string -->
<surname>Novák</surname>
<!-- salary is required, positive number
with 2 decimal places precision, e.g. 10000.50 -->
<salary>200000.00</salary>
<!-- note optional element, repeatable, contains any string -->
<note>Poznámka</note>
</osoba>
前三个元素对应一个"all"模型组,整体设置为一个序列。
据我所知,XML 架构不允许在序列模型组中嵌套 "all" 模型组。
以下模式验证了一个超集,其中注释也可以在任何地方。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="name" type="xs:string"/>
<xs:element name="surname" type="xs:string"/>
<xs:element name="salary" type="xs:decimal"/>
<xs:element name="note" type="xs:string" maxOccurs="unbounded"/>
</xs:all>
<xs:attribute name="pid" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
从那里,可以使用类型限制进一步将字符串微调为非空值和十进制值。
我解决了这个选择(所有订单)和序列中的序列的组合。
我有 3 个元素都是必需的,但可以按任何顺序排列,在它们之后有一个元素是可选的,并且 maxOccurs 是无限的。 xsd怎么写?
<!-- pid is required, unique (positive) integer
(can be used as a key for persons);
the name, surname, salary elts. can be ordered in any order -->
<person pid="1">
<!-- name is required, non-empty string -->
<name>Pavel</name>
<!-- surname is required, non-empty string -->
<surname>Novák</surname>
<!-- salary is required, positive number
with 2 decimal places precision, e.g. 10000.50 -->
<salary>200000.00</salary>
<!-- note optional element, repeatable, contains any string -->
<note>Poznámka</note>
</osoba>
前三个元素对应一个"all"模型组,整体设置为一个序列。
据我所知,XML 架构不允许在序列模型组中嵌套 "all" 模型组。
以下模式验证了一个超集,其中注释也可以在任何地方。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="name" type="xs:string"/>
<xs:element name="surname" type="xs:string"/>
<xs:element name="salary" type="xs:decimal"/>
<xs:element name="note" type="xs:string" maxOccurs="unbounded"/>
</xs:all>
<xs:attribute name="pid" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
从那里,可以使用类型限制进一步将字符串微调为非空值和十进制值。
我解决了这个选择(所有订单)和序列中的序列的组合。