У меня проблема с XML Schema
.Я хотел бы ввести elements
в другой element
, который был определен как рекурсивный.
Вышеприведенные строки кода предназначены для представления файлов и папок.
Вот текущийкод:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
<xs:complexType name="folder_type">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="folder" type="folder_type"></xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
<xs:element name="filefoldertree">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="folder" type="folder_type"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Например, приведенный выше код XSD
позволяет мне определить следующие XML
строки:
<filefoldertree xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:/C:/Users/Hadi/Desktop/filefoldertree.xsd">
<folder name="a">
<folder name="b">
<folder name="c">
</folder>
</folder>
</folder>
<folder name="d">
</folder>
</filefoldertree>
До тех пор, пока это не будет желательным поведением.Однако я хотел бы добавить последовательность file
elements
, вложенную в последовательность folder
.Например, я ищу следующий результат:
<folder name="a">
<folder name="b">
<file attr1="x" attr2="y" attr3="z"></file>
<folder name="c">
<file attr1="x" attr2="y" attr3="z"></file>
</folder>
</folder>
</folder>
<folder name="d">
<file attr1="x" attr2="y" attr3="z"></file>
</folder>
<file attr1="x" attr2="y" attr3="z"></file>
Поскольку folder
является typed
element
, я не могу определить вложенный complextype
, однако мне нужна его рекурсивная функциональность.
Как изменить код XSD
, чтобы добиться поведения, показанного приведенным выше кодом?
Спасибо за ваши ответы.