2010-11-08 16 views
31

Che cos'è la funzione di targetNamespace?Qual è la differenza tra targetNamespace e xmlns: target?

<schema xmlns="http://www.w3.org/2001/SchemaXML" 
     targetNamespace="http://www.example.com/name" 
     xmlns:target="http://www.example.com/name"> 

Capisco che xmlns="http://www.w3.org/2001/SchemaXML definisce lo spazio dei nomi dello schema XML.

Capisco anche che xmlns:target="http://www.example.com/name" definisce lo spazio dei nomi per il mio vocabolario se sto creando il mio schema utilizzando il prefisso "target"; questo funge da proxy o segnaposto per l'URI http://www.example.com/name.

Sembra abbastanza per definire i limiti e i vocabolari necessari per i partecipanti allo spazio dei nomi. Quindi, perché ho bisogno di un attributo targetNamespace che duplica lo spazio dei nomi http://www.example.com/name?

risposta

1

Il prefisso "target" in xmlns:target="http://www.example.com/name" non è niente di speciale. In che modo un processore dello schema dovrebbe sapere che si desidera che sia lo spazio dei nomi di destinazione per il proprio schema? targetNamespace fa proprio questo: dichiara lo spazio dei nomi a cui appartengono i componenti dello schema.

N.B. Non tutto nel documento dello schema entra nello spazio dei nomi target. Notare attributi "elementFormDefault" e "attributeFormDefault" sull'elemento "schema" e anche attribuire "forma" sugli elementi "elemento" e "attributo".

6

Lo spazio targetName dichiara uno spazio dei nomi per altri documenti xml e xsd per fare riferimento a questo schema. Il prefisso obiettivo in questo caso fa riferimento allo stesso spazio dei nomi e lo utilizzeresti all'interno di questa definizione dello schema per fare riferimento ad altri elementi, attributi, tipi, ecc. Definiti anche in questa stessa definizione dello schema.

34

con risposta abbastanza bene qui: targetNamespace and xmlns without prefix, what is the difference?

per ribadire:

  • targetNamespace="" - Come il documento XML corrente è uno schema questo attributo definisce lo spazio dei nomi che questo schema è destinato a bersaglio, o convalidare .

  • xmlns="" - Definisce lo spazio dei nomi di default all'interno del documento corrente per tutti gli elementi senza prefisso (cioè nessun yada: in <yada:elementName>)

  • xmlns:target="" - qui si sta solo definendo il proprio spazio dei nomi con il prefisso target:, questo è non correlato ai due casi speciali precedenti.

+1

'questo attributo definisce lo spazio dei nomi che questo schema è destinato a target' Trovo che questo sia così confuso. Lo schema sta "bersagliando" uno spazio dei nomi? Quindi, se faccio uno schema con 'targetNamespace =" google.com "' Ho appena creato uno spazio dei nomi su Google? Allora cosa? Infastidirà gli schemi di altre persone che hanno fatto lo stesso? Inoltre, quale prefisso viene utilizzato? – CodyBugstein

+0

@Imray è confuso, penso che come documento XSL sta definendo una struttura XML, lo spazio dei nomi è semplicemente un modo di identificare in modo univoco questa struttura in modo tale che in seguito quando un documento XML lo fa riferimento (usando xmlns = o xmlns: somelabel = come mostrato sopra) ha un nome che non è in conflitto con altri documenti XSL a cui potresti fare riferimento, ha senso? – Shaun

Problemi correlati