web-services xsd wsdl wsdl2java

web services - ¿Debe ser recuperable un URI de nombre de espacio de nombres XML?



web-services xsd (1)

Los espacios de nombres son URI que no necesitan ser recuperables

De la pregunta @jww:

La pregunta es si el punto final del espacio de nombres (= "http: // xxxxx / ws") debe ser una URL válida.

No, un espacio de nombres XML toma la forma léxica de un URI pero no tiene que ser recuperable de acuerdo con la Recomendación del W3C: Espacios de nombres en XML 1.0 (Tercera edición) :

El valor normalizado del atributo DEBE ser una referencia de URI (el nombre del espacio de nombres que identifica el espacio de nombres) o una cadena vacía. El nombre del espacio de nombres, para cumplir su propósito, DEBE tener las características de unicidad y persistencia. No es un objetivo que sea directamente utilizable para recuperar un esquema (si existe).

¿Por qué se usan los URI si no necesitan ser recuperables?

Del seguimiento de @jww en comentarios :

¿Cuál es el propósito de http: si no es recuperable? ¿No deberían usar algo como null: para indicar que es privado? De lo contrario, ¿cómo saben las personas como yo cuándo es privado y cuándo está en desuso o retirado? Supongo que lo que pregunto es, ¿cuál es el mecanismo de señalización?

Muchos, incluyéndome a mí, recomiendan que el URI del espacio de nombres se pueda recuperar como documento o como el XSD en sí mismo. Sin embargo, como se muestra arriba, no es obligatorio. Además, un procesador XML de validación conforme ni siquiera necesita informar cuando un nombre de espacio de nombres no es un URI :

Para cumplir con esta especificación, un procesador DEBE informar violaciones de la buena formación del espacio de nombres, con la excepción de que no SE REQUIERE verificar que los nombres de espacios de nombres sean referencias de URI [ RFC3986 ].

Por esta razón, a veces verá que no URI se usa en nombres de espacios de nombres, especialmente para ejemplos rápidos y descartables. (Sin embargo, probablemente sea mejor usar http://www.example.org/topic en estos casos para ser apropiado).

Los URI se usan porque son un mecanismo conveniente para expresar la unicidad de un recurso con una especificación de autoridad incorporada : el propietario del dominio es el responsable de los espacios de nombres definidos usando el dominio.

Espacios de nombres como puntos finales

Del seguimiento de @jww en comentarios :

Si el punto final ya no existe, ¿significa que tenemos que volver a generar el proxy de código auxiliar para el servicio web nuevamente?

No, y ni siquiera debería referirse al espacio de nombres como un punto final. La capacidad de recuperación del nombre de espacio de nombres URI no tiene relación en ningún momento con la especificación u operación de su servicio web.

Tengo las siguientes etiquetas en mi 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">

Posteriormente, los tipos se califican para ser en los espacios de nombres s0, s1 ...

La pregunta es si el punto final del espacio de nombres (= "http: // xxxxx / ws") debe ser una URL válida.
Si el punto final ya no existe, ¿significa que debemos volver a generar el proxy de código auxiliar para el servicio web nuevamente?

Nota : El punto final del servicio web en sí es diferente del de los espacios de nombres y todavía existe.