Возможно ли с помощью схемы XML ограничить глубину дочерних элементов, вложенных в родительский элемент?
В этом контексте я собираю сигналы тревоги из системы управления и хочу предоставить документ XML, который позволяет завершатьПользователь определяет некоторые правила для фильтрации сигналов тревоги в папках в пользовательском интерфейсе.Я хочу ограничить глубину вложенных папок до 3, чтобы конечный пользователь не мог вкладывать сотни уровней в глубину - поскольку фильтрация на стольких уровнях в конечном итоге может привести к сбою приложения., но представляется целесообразным определить это в схеме, если это возможно.
Например, это было бы хорошо:
<group name="Folder 1">
<group name="Folder 2">
<group name="Folder 3">
<group name="Folder 4">
</group>
</group>
</group>
</group>
Это было бы неверно, так как папка 5 слишком глубокая.
<group name="Folder 1">
<group name="Folder 2">
<group name="Folder 3">
<group name="Folder 4">
<group name="Folder 5">
</group>
</group>
</group>
</group>
</group>
Моя схема выглядит следующим образом, но она не ограничивает глубину для приведенного выше фрагмента.
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="hierarchy">
<xs:complexType>
<xs:sequence>
<xs:element name="group" type="GroupType" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:complexType name="GroupType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="group" type="GroupType" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="filterOn" type="xs:string" use="optional" />
<xs:attribute name="operator" type="xs:string" use="optional" />
<xs:attribute name="value" type="xs:string" use="optional" />
</xs:complexType>
</xs:schema>
Любые указатели очень ценятся!