XML-схема: пустое targetNamespace
Законно ли использование атрибута targetNamespace или пустого атрибута в схеме XML?
Если так, то что это значит, мы "добавляем" что-то в "пустое пространство имен" (которое всегда существует) или создаем "анонимное пространство имен", которое не связано с другими схемами?
Как будет выглядеть экземпляр XML-документа, должны ли элементы быть явно ограничены некоторым пространством имен?
2 ответа
См. XML Schema Part 0: Primer для очень краткого описания того, как работают необъявленные targetNamespaces.
Что касается пустого targetNamespace, это недопустимо. Из спецификации:
Так как пустая строка не является допустимым именем пространства имен, указание пустой строки для targetNamespace является непоследовательным и не то же самое, что вообще не указывать его. Подходящей формой документа схемы, соответствующей · схеме ·, компоненты которой не имеют {целевого пространства имен}, является та, для которой вообще не указан атрибут targetNamespace.
Определенно да. Пространства имен XML являются необязательными - вы можете оставить их, если хотите, и если у вас не возникнут какие-либо проблемы с неоднозначными элементами XML в вашем "мире XML".