Для чего это пространство имен импорта XSD?

У меня есть xsd документ, который начинается с:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:import namespace="http://www.w3.org/XML/1998/namespace"     schemaLocation="http://www.w3.org/2001/xml.xsd"/>
    <xs:complexType name="T_segment">
        <xs:sequence>
            <xs:element ref="element" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute ref="xml:space" use="required"/>
        <xs:attribute ref="id" use="required"/>
    </xs:complexType>
...

Когда я пытаюсь использовать этот xsd в применении отображения как BizTalk, это взрывает жалобу на пространства имен. Так, я удаляю xs:import признак пространства имен, и он жалуется на xs:attribute касательно = «xml:space» признак. Так, я удаляю это, и это, кажется, работает хорошо (по крайней мере, не взрывается).

Мой вопрос, для чего те признаки? Удаляя их я ломающий xsd?

Из того, что я знаю, что пространства имен должны избежать конфликтов. Но в xsd все снабжено префиксом xs, и у самой схемы есть xmlns:xs = «http://www.w3.org/2001/XMLSchema». Я не уверен, для чего тот импорт.

10
задан dtc 22 January 2010 в 21:13
поделиться

1 ответ

Элемент импортирует пространство имен XML в схему. Импортированное пространство имен содержит определение для атрибута "space". Бит определяет требуемый атрибут "space" для сложного типа "T_segment" по ссылке из импортированной схемы (т.е. так, чтобы вам не пришлось переписывать определение). Атрибут space по сути дает вам возможность определить, является ли пробел значимым для элемента или нет.

Теперь, в зависимости от приложения, вы на самом деле можете сломать вещи, потому что по существу вы удаляете ограничение из сложного типа, которое может быть релевантным для приложения, потребляющего документ, описанный этой схемой. Не зная больше о приложении, трудно сказать, важно ли это в вашем случае или нет.

10
ответ дан 4 December 2019 в 01:31
поделиться