Per coloro che sono ancora confuso, prendere in considerazione questi tre XSD. Tutti definiscono un tipo globale e una definizione di elemento globale che lo fa riferimento.
In primo luogo, un xsd come quello pubblicato sopra. Esso utilizza il prefisso 'XSD' per lo spazio dei nomi dello schema, e uno spazio dei nomi predefinito per il targetNamespace:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns="http://example.com/">
<xsd:element name="aGlobalElement" type="aGlobalType"/>
<xsd:simpleType name="aGlobalType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:schema>
Ora lo stesso XSD, ma la definizione e l'utilizzo di un prefisso dello spazio dei nomi per lo spazio dei nomi di destinazione:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns:tns="http://example.com/">
<xsd:element name="aGlobalElement" type="tns:aGlobalType"/>
<xsd:simpleType name="aGlobalType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:schema>
... e, infine, una versione che utilizza uno spazio dei nomi di default al posto di 'XSD' per lo spazio dei nomi dello schema XML:
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns:tns="http://example.com/">
<element name="aGlobalElement" type="tns:aGlobalType"/>
<simpleType name="aGlobalType">
<restriction base="string"/>
</simpleType>
</schema>
la maggior parte dello schema autori scelgono il primo o l'ultimo, perché se la funzione di namespace predefinita è disponibile, quindi potremmo anche utilizzarla per qualcosa.
potrei mancare una certa conoscenza su questo argomento, ma non poteva essere la risposta basta: xmlns è il namespace di default per questo documento (il documento dello schema), mentre targetNamespace è lo spazio dei nomi che questo documento dello schema valida? E in questo modo xmlns e targetNamespace sono due cose diverse? – Vering
@Verché i risultati del mio test sono in concomitanza con la prima frase sì, lo spazio dei nomi di destinazione si riferisce sicuramente al documento che lo schema convalida. La presenza di targetNamespace sembra inoltre richiedere la presenza di "xmlns" o "xmlns: xxx". In effetti puoi combinare molti 'xmlns: xxx', 'xmlns: yyy' e 'xmlns' insieme e continua a convalidare. – ifelsemonkey