Должен ли быть доступным извлечение URI имени пространства имен XML?
У меня есть следующие теги на моем WSDL:
<?xml version='1.0' encoding='UTF-8'?>
<definitions name="" targetNamespace="http://xxxxx/ws"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:s0="http://xxxxx/ws"
xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://xxxxx/ws/comments"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:s0="http://xxxxx/ws"
xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://xxxxx/ws"
xmlns:tnsc="http://xxxxx/ws/comments"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:y="http://new.webservice.namespace">
Типы после этого квалифицируются как be в пространствах имен s0,s1....
Вопрос в том, должна ли конечная точка пространства имен (="http://xxxxx/ws") быть действительным URL?
Если конечная точка больше не существует - значит ли это, что нам нужно заново сгенерировать заглушку прокси для веб-службы?
Примечание. Конечная точка самой веб-службы отличается от конечной точки пространств имен и все еще существует.
1 ответ
Пространства имен - это URI, которые не нужно извлекать
От @jww вопрос:
Вопрос в том, должна ли конечная точка пространства имен (="http://xxxxx/ws") быть действительным URL?
Нет, пространство имен XML принимает лексическую форму URI, но его не нужно извлекать в соответствии с Рекомендацией W3C: Пространства имен в XML 1.0 (третье издание):
Нормализованное значение атрибута ДОЛЖНО быть либо ссылкой URI - именем пространства имен, идентифицирующим пространство имен - либо пустой строкой. Имя пространства имен, чтобы служить его назначению, ДОЛЖНО иметь характеристики уникальности и постоянства. Это не цель, чтобы он был непосредственно применим для извлечения схемы (если таковая существует).
Почему используются URI, если их не нужно извлекать?
От @jww продолжение в комментариях:
Какова цель
http:
если его не восстановить? Разве они не должны использовать что-то вродеnull:
сигнализировать о своей частной жизни? В противном случае, как такие люди, как я, узнают, когда он закрыт, а когда он устарел или отозван? Я думаю, что я спрашиваю, что такое механизм сигнализации?
Многие, в том числе и я, действительно рекомендуют извлекать URI из пространства имен как документ или как сам XSD. Однако, как показано выше, это не требуется. Кроме того, согласованный, проверяющий процессор XML даже не должен сообщать, когда имя пространства имен не является URI:
Чтобы соответствовать этой спецификации, процессор ДОЛЖЕН сообщать о нарушениях правильности формы пространства имен, за исключением того, что НЕ ТРЕБУЕТСЯ проверять, что имена пространства имен являются ссылками URI [ RFC3986].
По этой причине вы иногда будете видеть не-URI, используемый в именах пространства имен, особенно для быстрых, одноразовых примеров. (Но, наверное, лучше использовать http://www.example.org/topic
в таких случаях быть правильными.)
URI используются потому, что они представляют собой удобный механизм для выражения уникальности ресурса с помощью встроенной спецификации полномочий - владелец домена является ответственным за пространства имен, определенные с использованием домена.
Пространства имен как конечные точки
От @jww продолжение в комментариях:
Если конечная точка больше не существует - значит ли это, что нам нужно заново сгенерировать заглушку прокси для веб-службы?
Нет, и вам даже не следует ссылаться на пространство имен как на конечную точку. Возможность извлечения URI имени пространства имен не имеет никакого отношения в любое время к спецификации или работе вашей веб-службы.