Я пытаюсь использовать пространства имен в файле xml, состоящем из нескольких файлов.
XML-схема
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
version="1.0"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:mynamespace"
targetNamespace="urn:mynamespace">
<xsd:element name="main_element" type="typeMainElement" />
<xsd:complexType name="typeMainElement">
<xsd:sequence>
<xsd:element name="inner_element" type="typeInnerElement" />
</xsd:sequence>
<xsd:attribute name="test_attribute" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="typeInnerElement">
<xsd:sequence>
<xsd:element name="description" type="xsd:string" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Основной XML
<main_element test_attribute="value"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns="urn:mynamespace">
<inner_element>
<description>Test</description>
</inner_element>
</main_element>
Проверка XML с помощью XML-схемы работает отлично. Но если я попытаюсь передать какую-то часть XML на аутсорсинг, полагаясь на XInclude
, то ничего больше не будет работать.
Разделенный XML
<main_element test_attribute="value"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns="urn:mynamespace">
<xi:include href="simple_part.xml" />
</main_element>
Включенный XML
<inner_element>
<description>Test</description>
</inner_element>
Попытка проверить Разделенный XML возвращает ошибку:
simple_part.xml:1: элемент inner_element: ошибка достоверности схемы: элемент 'inner_element': этот элемент не ожидается. Ожидается ({urn:mynamespace}inner_element).
simple_main_element.xml не проходит проверку
Кажется, что при включении я теряю наследование пространства имен, поэтому включенный контент больше не имеет пространства имен.