Установка minOccurs и maxOccurs в XSD на основе значения другого поля XML?
У меня есть XSD для проверки XML-файла. Структура выглядит следующим образом:
<root>
<child>
<size>2</size>
<childElement>Element 1</childElement>
<childElement>Element 2</childElement>
</child>
</root>
НомерchildElement
s зависит от предоставленного размера, то есть, еслиsize
был установлен как 3, не более 3childElement
с можно добавить.
Я пытался использоватьxs:alternative
но это не похоже на работу
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="child" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="size" type="xs:integer" maxOccurs="1"/>
<xs:element name="childElement" type="xs:string" maxOccurs="1">
<xs:alternative test="@size>1" maxOccurs="@size"/>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Есть ли способ использованияxs:alternative
или другой тег для достижения этого, или это за пределами возможного с XSD?