tutorial query namespace example ejemplo xml soap namespaces

xml - query - soap tutorial



¿Cuál es la importancia de las barras diagonales en un URI de espacio de nombres? (3)

He estado estudiando SOAP y WSDL en preparación para implementar un servicio web. Una cosa que me he encontrado que me desconcierta es que algunos de los URI que he visto usan una barra inclinada tal como:

http://www.w3.org/some-namespace/

mientras que otros ejemplos que he estudiado omiten esta barra inclinada. Realmente tengo varias preguntas con respecto a esto:

  • ¿Cuál es el significado de la barra final?
  • ¿Es el URI, http://www.w3.org/some-namespace lo mismo que http://www.w3.org/some-namespace/?
  • Si no son lo mismo, ¿cómo decido cuándo un formulario está garantizado frente a otro?
  • He leído las pautas dadas por w3c con respecto a los URI y éstas parecen indicar que ese URI debe considerarse igual solo si la comparación sensible a mayúsculas y minúsculas de las cadenas de URI se considera igual. ¿Es correcta esta interpretación?

Los URI de espacio de nombres simplemente se refieren a identificadores únicos ( aquí hay un enlace a las reglas para comparar). El uso de un URI (versus, digamos "foo") se remonta (creo) al uso de URI en un DOCTYPE XML.

Lo cual también es, creo que es la confusión acerca de la "capacidad de recuperación" de tales URI. La Especificación XML requiere que el identificador del SISTEMA en un DOCTYPE se pueda usar para recuperar la DTD del documento (yo enlace a la Especificación XML Anotada, en lugar de la versión W3C, porque creo que el comentario de Tim Bray es muy útil).

Aunque otras especificaciones (por ejemplo, el esquema XML) no requieren este comportamiento, creo que es un hábito útil a seguir, particularmente en el caso de los espacios de nombres de destino del esquema. Por un lado, hace que sea fácil para los consumidores de su esquema encontrar siempre la definición correcta. Por otro, si tiene el poder de colocar el documento en una URL pública, también puede asegurarse de que el URI sea único.

Finalmente: los identificadores uniformes de recursos (URI) son un superconjunto de localizadores uniformes de recursos (URL). También puede tener un Nombre de recurso uniforme (URN), y creo (pero no tengo la especificación a mano) que hay una tercera forma de identificador.


No, no son lo mismo.

La mayor diferencia estaría en la formación de uris relativos desde esa base; con la barra, el pariente uri sería un descendiente; sin la barra, sería un hermano, es decir, (ejemplo de C #):

Uri uri = new Uri(@"http://www.w3.org/some-namespace/"); Console.WriteLine(new Uri(uri, "foo")); // http://www.w3.org/some-namespace/foo uri = new Uri(@"http://www.w3.org/some-namespace"); Console.WriteLine(new Uri(uri, "foo")); //http://www.w3.org/foo


Sí, las pautas de w3c con respecto a los URI que ha leído son correctas .

Los dos espacios de nombres que no tienen igual-cadenas-uri son espacios de nombres diferentes. Incluso la capitalización y el espacio en blanco importa .

Un espacio de nombres-uri no significa que la emisión de una solicitud debe producir una respuesta web. Por lo tanto, cualquier razonamiento sobre si debe o no debe terminar con "/" no es demasiado significativo.

De hecho, un namespace-uri puede incluso no satisfacer las reglas de sintaxis para un URI y aún servirá para definir un espacio de nombres. Es perfectamente útil usar un espacio de nombres como, digamos:

"//^%$#sdhfgds"

siempre que sea único (tenga en cuenta que de ninguna manera estoy recomendando dicho uso :)). Los procesadores XML existentes (como analizadores, procesadores XPath o XSLT) no generan ningún error cuando se encuentran con dicho espacio de nombres.