Ответ 1
В соответствии с w3, tns означает "это пространство имен", ссылаясь на текущий документ.
Источник: http://www.w3.org/TR/wsdl#_notational
Я использую JAX-WS для запуска некоторых примеров веб-сервисов. После публикации веб-сервисов, когда я набрал URL WSDL, я мог видеть документ WSDL. Документ WSDL ссылается на документ схемы, который выглядит следующим образом:
<xs:schema version="1.0" targetNamespace="http://ts.ch01/">
<xs:element name="getTimeAsElapsed" type="tns:getTimeAsElapsed"/>
<xs:element name="getTimeAsElapsedResponse" type="tns:getTimeAsElapsedResponse"/>
<xs:element name="getTimeAsString" type="tns:getTimeAsString"/>
<xs:element name="getTimeAsStringResponse" type="tns:getTimeAsStringResponse"/>
−
<xs:complexType name="getTimeAsString">
<xs:sequence/>
</xs:complexType>
−
<xs:complexType name="getTimeAsStringResponse">
−
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="getTimeAsElapsed">
<xs:sequence/>
</xs:complexType>
−
<xs:complexType name="getTimeAsElapsedResponse">
−
<xs:sequence>
<xs:element name="return" type="xs:long"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Мой вопрос: почему в объявлении элемента появляется "tns" ? Например:
<xs:element name="getTimeAsElapsed" type="
ТНС: getTimeAsElapsed"/>
Я нигде не вижу документа схемы, в котором "tns" должен быть объявлен как префикс пространства имен, документ схемы просто начинается с
<xs:schema version="1.0" targetNamespace="http://ts.ch01/">
Тогда почему "tns" появляется при ссылке на другие элементы? Это по умолчанию поведение схемы XML, сгенерированной JAX-WS?
В соответствии с w3, tns означает "это пространство имен", ссылаясь на текущий документ.
Источник: http://www.w3.org/TR/wsdl#_notational
вам нужно думать, что весь документ wsdl является одним большим xml файлом. В этом случае действительный префикс пространства имен, объявленный в корневом элементе (элемент определения) дочернего элемента.
Нет требования, чтобы пространство имен tns было объявлено в корневом элементе схемы (элемента схемы). Но если вы выделили схему отдельно для одного файла, вам нужно иметь префикс tns.