2011-04-22 25 views
26

Tome esta línea como un solo ejemplo:¿Por qué hay URL en espacios de nombres XML?

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
</configuration> 

una breve investigación me ha enseñado que no necesariamente tiene que ser alojado en la URL. Por lo tanto, si solo se trata de una referencia a un espacio de nombres contenido en un ensamblado local, ¿por qué usar URL en lugar de espacios de nombres regulares como los que normalmente usa .NET (System.Data, por ejemplo)?

+2

Probablemente porque son bastante únicos. –

+1

Entiendo que las URL son exclusivas. ¿Por qué exactamente necesitamos etiquetas XML únicas? – osa

Respuesta

8

Es solo una convención. Los URI (que son lo que son, en realidad no son URL) son una forma conveniente y globalmente familiar de identificar recursos. Por otro lado, los identificadores estilo .NET son familiares y reconocibles para, bueno, los desarrolladores .NET - hay bastante más en XML que en .NET.

+1

Afortunadamente, es realmente único en el mundo. De lo contrario, no tiene mucho sentido. –

+2

@Robert: No estoy de acuerdo. Los URI de espacio de nombres XML solo deben ser únicos * en el contexto en el que se usan *. Idealmente, más allá de eso, sí, pero solo para el esquema público. – skaffman

+0

Supongo que aún no entiendo por qué se utilizan URI. Según mi entender, y de acuerdo con Wikipedia y otros recursos, URI se define como "una cadena de caracteres utilizada para identificar un nombre o recurso en Internet".Si se hace referencia a ensamblados locales y el URI de espacio de nombres no intenta identificar un recurso de Internet, ¿por qué usar URI? Además, HTTP significa "protocolo de transferencia de hipertexto". ¿Cómo tiene sentido prefijar un espacio de nombres con cualquier tipo de protocolo de transferencia? – oscilatingcretin

4

W3 explanation Here

Al igual que los espacios de nombres en .NET, espacios de nombres en los documentos XML están diseñados para ayudar a prevenir y resolver los conflictos de nombres, especialmente si los documentos XML son de diferentes organizaciones y/o dominios de conocimiento.

El formato de documento XML ha sido estilizado por las mismas personas responsables de HTML, por lo que puede encontrar similitudes sintácticas en los elementos del formato. Semánticamente, los espacios de nombres dotNET y XML tienen el mismo objetivo.

+0

Entiendo los conceptos de URI y formato de documento XML. Mi publicación inicial abordó la pregunta de por qué los espacios de nombres XML se parecen a las URL. Sí, sé que una URL es una URI, pero hay algo claramente reconocible sobre una URL. Tiene un protocolo, un dominio, un sufijo, referencias de carpeta y, la mayoría de las veces, un documento. Me quedó claro que el formato del espacio de nombres XML es lo que es simplemente porque los ganstas originales de XML tomaron una decisión basada en su comprensión de cómo funcionarían las cosas en ese momento. Si se inventó XML hoy, sus espacios de nombres probablemente no se parecerían a una URL. – oscilatingcretin

+3

Además, varias personas aquí han dicho que los espacios de nombres de URL otorgan unicidad, pero no veo cómo. No existe garantía de exclusividad para ningún formato de URI, ya sea un espacio de nombres de estilo XML o .NET (a menos que esté hablando de una URL). En mi opinión, arrojar "http" y ".com" en un espacio de nombres simplemente no tiene respaldo lógico. ¿Qué pasa si alguien se niega a renovar el registro del nombre de dominio y alguien más lo compra (ejem, Microsoft)? ¿De qué sirve su URI estilo URL ahora? Sin consistencia, imo. – oscilatingcretin

+1

@oscilatingcretin: no se garantiza que los GUID sean únicos tampoco, pero la probabilidad de que un GUID generado correctamente sea idéntico a otro es infinitamente pequeña. El uso de URL proporciona una garantía razonable de exclusividad. –

16

Cuando pregunta por qué un estándar es la forma en que es, hay dos posibles interpretaciones de su pregunta: (a) ¿Cuáles son los beneficios percibidos de la elección del diseño que se realizó, y (b) cuál fue la secuencia histórica? de los eventos que llevaron a este diseño a ser adoptado sobre otros diseños.

Claramente, el uso de URI de tipo HTTP otorga exclusividad. Pero eso también podría haberse logrado de otras maneras, por ejemplo inventando un nuevo esquema de URI. Creo que si rastrea los argumentos que se hicieron en ese momento, encontrará que muchas de las personas que abogan por el uso de URI de estilo HTTP también estaban defendiendo que los URI de espacio de nombres deberían ser referenciables, tal vez a un esquema o a otro tipo del documento. De hecho, es política del W3C para sus propios espacios de nombres que siempre haya un documento que pueda recuperarse cuando escriba el URI de espacio de nombres en un navegador, y que le diga algo útil sobre el espacio de nombres.

así que sospecho que el hecho de que usamos URIs que se ven deferenceable pero no define ninguna semántica para lo que sucede cuando se eliminan las referencias es en realidad el resultado de un compromiso entre el comité de dos o más campos opuestos. Pero tendrías que hacer una investigación histórica adecuada para confirmar eso.

0

El núcleo del problema es que los espacios de nombres deben ser URI. No hay una buena razón para tal cosa ya que todo lo que necesita es un identificador único para dar contexto a los elementos definidos.

Dado que tienen que ser URI, todas las posibilidades carecen de sentido, porque se necesita un esquema (por ejemplo, http) aunque un espacio de nombres no tenga nada que ver con tal cosa.

Para responder a la pregunta de por qué: como todas las malas ideas, alguien pensó que era una buena idea en ese momento.

Cuestiones relacionadas