J'utilise JAX-WS pour exécuter des exemples de services Web. Après la publication des services Web, lorsque je tapais l'URL WSDL, je pouvais voir le document WSDL. Le document WSDL fait référence à un document de schéma qui se présente comme suit:
<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>
Ma question est la suivante: pourquoi "tns" apparaît-il dans la déclaration de l'élément? Par exemple:
<xs:element name="getTimeAsElapsed" type="
tns: getTimeAsElapsed"/>
Je n'ai nulle part dans le document de schéma de voir 'tns' être déclaré comme préfixe d'espace de nom, le document de schéma commence simplement par
<xs:schema version="1.0" targetNamespace="http://ts.ch01/">
Alors pourquoi "tns" apparaît-il en référençant d'autres éléments? Est-ce par défaut le comportement du schéma XML généré par JAX-WS?
Selon w3, tns signifie "cet espace de noms", en référence au document actuel.
vous devez penser le document entier de wsdl en tant qu'un grand fichier xml. Dans ce cas, l'utilisation d'un préfixe d'espace de nom déclaré à l'élément racine (élément de définition) à l'élément enfant est valide.
Il n'est pas nécessaire de déclarer l'espace de noms tns au niveau de l'élément racine schema (schema element). Mais si vous séparez le schéma d'un fichier, vous devez utiliser le préfixe tns.