Namespace per un linguaggio XML personalizzato: URI o no

0

Sto lavorando su un linguaggio simile a XML che presenta anche un sistema di namespace. Ora la mia domanda è: dovrei usare gli URI come nomi di namespace (1) o dovrei seguire la denominazione di java / .net / php namespaces (2)? Quest'ultimo sarebbe nel mio caso (Identifier "/")* Identifier in cui un identificatore può contenere "." come carattere di follow up.

Per ogni spazio dei nomi ci sarà uno schema che descrive i tipi in esso contenuti. Lo schema di un determinato spazio dei nomi dovrebbe essere individuabile dagli strumenti. Diversamente dall'XML, tutti i tipi sono globali e uno spazio dei nomi deve sempre essere risolto nello stesso schema.

Un mio amico è strongmente per (1) suggerendo che l'URI potrebbe puntare al file dello schema. Tuttavia, non penso che sia una buona idea mescolare qui due preoccupazioni: la denominazione degli spazi dei nomi dovrebbe essere indipendente dall'individuazione del suo schema. Inoltre, gli URI non hanno una struttura ben definita che consentirebbe agli strumenti di aiutare gli utenti a trovare uno spazio dei nomi oltre a elencare tutti gli spazi dei nomi disponibili. Inoltre, se dettagli come porte o nome utente / password sono inclusi in tali URI, ci sono dipendenze tecniche impossibili da eliminare dopo che i documenti che utilizzano tale spazio dei nomi sono stati diffusi. Inoltre, diversamente da quanto si potrebbe pensare, anche se due URI puntano alla stessa risorsa (ad esempio ftp // localhost / bla e ftp // 127.0.0.1 / bla) rappresentano due diversi spazi dei nomi.

L'approccio (2) potrebbe utilizzare un servizio di query dello schema gerarchico (simile al DNS), in modo che lo spazio dei nomi possa essere "foo.com/bar" mentre il file si trova su un server privato (ad esempio http // foo- interno: 1234 / schemi / bar) accessibile solo per i dipendenti dell'azienda foo. Se il servizio di query dello schema non è in grado di individuare lo schema (o se il servizio di query dello schema non è disponibile), potrebbe esserci qualche meccanismo di fallback che mette semplicemente "http: //" o "https: //" davanti al namespace e lo usa come URI per il file dello schema. Ciò tuttavia ha l'enorme svantaggio di rendere inutile il protocollo https in quanto un utente malintenzionato potrebbe semplicemente bloccare la porta https in modo che lo strumento ricada su http. Poiché esiste un servizio di query e gli spazi dei nomi hanno una gerarchia implicita indotta dal separatore "/", gli editor possono elencare tutti gli spazi dei nomi secondari quando l'utente digita un tale.

Cosa preferiresti?

    
posta Henning 25.05.2016 - 16:43
fonte

0 risposte

Leggi altre domande sui tag