¿Debe ser recuperable el URI del nombre del espacio de nombres XML?

Resuelto IUnknown asked hace 10 años • 1 respuestas

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">

A partir de entonces, los tipos se califican para estar 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 auxiliar para el servicio web?

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

IUnknown avatar Dec 23 '14 11:12 IUnknown
Aceptado

Los espacios de nombres son URI que no necesitan ser recuperables.

De la pregunta de @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 según 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 el propósito previsto, DEBE tener las características de unicidad y persistencia. No es un objetivo que se pueda utilizar directamente para recuperar un esquema (si existe alguno).

¿Por qué se utilizan URI si no es necesario que sean recuperables?

De @jww seguimiento en comentarios :

¿ Cuál es el propósito de http:si no es recuperable? ¿No deberían usar algo como null:para señalar que es privado? De lo contrario, ¿cómo saben la gente como yo cuándo es privado y cuándo está obsoleto 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 un documento o como el propio XSD que lo rige. Sin embargo, como se muestra arriba, no es necesario. Además, un procesador XML conforme y de validación ni siquiera necesita informar cuando el nombre de un espacio de nombres no es un URI :

Para cumplir con esta especificación, un procesador DEBE informar violaciones del buen formato del espacio de nombres, con la excepción de que no es OBLIGATORIO verificar que los nombres de los espacios de nombres sean referencias de URI [ RFC3986 ].

Por esta razón, a veces verá que se utiliza un URI que no es URI en los nombres de los espacios de nombres, especialmente para ejemplos rápidos y desechables. (Sin embargo, probablemente sea mejor utilizarlo http://www.example.org/topicen tales casos para que sea adecuado).

Los URI se utilizan 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 utilizando el dominio.

Espacios de nombres como puntos finales

De @jww seguimiento en comentarios :

Si el punto final ya no existe, ¿significa que debemos volver a generar el proxy auxiliar para el servicio web?

No, y ni siquiera deberías referirte al espacio de nombres como un punto final. La capacidad de recuperación del URI del nombre del espacio de nombres no influye en ningún momento en la especificación o el funcionamiento de su servicio web.

kjhughes avatar Dec 23 '2014 04:12 kjhughes