XML-файл с пользовательскими дочерними узлами
На самом деле я работаю с платформой Magento 2, которая реализует схему XSD для своих файлов конфигурации.
У меня есть файл flow.xml
где разработчик поместил свое XML-отображение и некоторые конфигурации.
Моя цель сделать два узла обязательными mapping
а также options
где разработчик может написать любую XML-структуру, какую захочет.
Вот мои реальные файлы:
# File flow.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Dnd_Flow:etc/flow.xsd">
<mapping>
// Here can be other nodes on X levels (or simply string = bonus)
</mapping>
<options>
// Here can be other nodes on X levels (or simply string = bonus)
</options>
</config>
Мой XSD-файл выглядит так:
# File flow.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="config" type="configType" />
<xs:complexType name="configType">
<xs:sequence>
<xs:element type="xs:????" name="mapping" minOccurs="0" />
<xs:element type="xs:????" name="options" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Я старался mixed
ценности, xs:all
, разные типы элементов, но без результата.
Это может быть просто, но я новичок в схемах XSD, и я изо всех сил пытаюсь найти решение, где это может быть что угодно в моих двух узлах.
Спасибо,
Matthéo.
1 ответ
Решение
Тип, который вы хотите xsd:anyType
, который вы можете получить по имени:
<xs:element type="xs:anyType" name="mapping" minOccurs="0" />
<xs:element type="xs:anyType" name="options" minOccurs="0" />
или опуская type
атрибут:
<xs:element name="mapping" minOccurs="0" />
<xs:element name="options" minOccurs="0" />