Voor het volgende XML-fragment:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
Wat betekenen de kenmerken xmlns
, xmlns:xsi
en xsi:schemaLocation
precies? Hoe zijn ze verwant? Waar is de :
voor?
En er zijn 2 URL’s in de xsi:schemaLocation=
- http://maven.apache.org/POM/4.0.0( het is toevallig hetzelfde als
xmlns
maar het geeft een 404-fout bij het bezoeken.) - http://maven.apache.org/xsd/maven-4.0. 0.xsd(dit is een echt XSD-document)
Als 1 niet bestaat, waarom zou je hem daar dan nog plaatsen?
Antwoord 1, autoriteit 100%
Naamruimte-gerelateerde attributen in XML en XML Schema (XSD)
-
xmlns
maakt deel uit van de W3C-naamruimten in XML-aanbeveling:Het voorvoegsel xmlnswordt alleen gebruikt om naamruimtebindingen te declareren en
is per definitie gebonden aan de naamruimtenaam
http://www.w3.org/2000/xmlns/.In uw voorbeeld , verklaart het dat
http://maven.apache.org/POM/4.0.0
is de standaardnaamruimte voor de elementen in uw Maven-project . -
xmlns:xsi
verklaart een standaard namespace-voorvoegsel (xsi
) voor een Core-naamruimte die wordt gebruikt in XSD:http://www.w3.org/2001/XMLSchema-instance
XML-schema: Structuren definieert ook verschillende attributen voor direct gebruik
in welke XML-documenten. Deze attributen zijn in een andere naamruimte,
welke heeft de naam van de naamruimte
http://www.w3.org/2001/xmlschema-Instance . Voor beknoptheid, de tekst en
Voorbeelden in deze specificatie Gebruik het voorvoegsel XSI: hiervoor staan
laatste naamruimte; In de praktijk kan elk voorvoegsel worden gebruikt.In uw voorbeeld , verklaart het de conventionele binding van de
xsi
namespace prefix aanhttp://www.w3.org/2001/XMLSchema-instance
, die het gebruik van de volgende kenmerken op de juiste manier instelt:-
xsi:type
Hiermee kunt u een XML-instantie toestaan om het elementtype-informatie rechtstreeks te associëren in plaats van via een XSD. Zie Hoe Beperk de waarde van een XML-element met XSI: TYPE IN XSD?In uw voorbeeld ,
xsi:type
wordt niet gebruikt; Inbegrepen hier voor volledigheid met betrekking totxsi
. -
xsi:nil
staat toe dat een leeg element als geldig wordt beschouwd terwijl de XSD dit anders niet zou hebben toegestaan.In uw voorbeeldwordt
xsi:nil
niet gebruikt; hier opgenomen voor de volledigheid met betrekking totxsi
. -
xsi:schemaLocation
enxsi:noNamespaceSchemaLocation
geven hints aan de XML-processor over hoe een XSD te koppelen aan een XML-document. Gebruikxsi:schemaLocation
als er een naamruimte is; gebruikxsi:noNamespaceSchemaLocation
als er geen naamruimte is.In uw voorbeeldis er een naamruimte, dus u gebruikt
xsi:schemaLocation
correct, waarvan de waarden door spaties gescheiden parenvan naamruimteen XSD-locatie-URI. Uw voorbeeld gebruikt de naamruimte,http://maven.apache.org/POM/4.0.0
, en naamruimten zijn lexicale naamgevingsconstructies die hoeft niet opvraagbaar te zijn. Uw voorbeeld gebruikt ook de XSD-locatie-URI,http://maven.apache.org/xsd/maven-4.0.0.xsd
, die kan worden opgehaald zoals het hoort.Als uw voorbeeld geen naamruimte gebruikte, zou u
xsi:noNamespaceSchemaLocation
gebruiken, waarvan de waarde een enkele XSD-location-URIis die verwijst naar de locatie van de beoogde XSD en die moet kunnen worden opgehaald.
-
-
targetNamespace
is een attribuut op dexs:schema
root
element van een XSD dat de naamruimte van het root-element specificeert
van de XML-documentinstanties die de XSD moet besturen. Het moet
overeenkomen met de standaard of expliciete naamruimte van de root van die XML-documenten
elementen.
Antwoord 2, autoriteit 20%
xmlns
definieert de standaard naamruimte, die stelt dat alle knooppunten binnen het projectknooppunt en zonder een naamruimte-alias zich in http://maven.apache.org/POM/4.0.0
naamruimte standaard.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
definieert naamruimte – http://www.w3.org/2001/XMLSchema-instance
, en geeft het een nieuwe alias – xsi
xsi:schemaLocation
is een attribuut schemaLocation
van "http://www.w3.org/2001/XMLSchema-instance"
naamruimte . Het bevat waardeparen – naamruimte-URI en schemalocatielink voor xsd-schemabestand van die naamruimte. Het kan veel waardeparen bevatten – één xsd-bestand voor elke gedefinieerde naamruimte-URI. Dat betekent dat link http://maven.apache.org/xsd/maven-4.0.0.xsd
xsd-schema bevat met definitie van http://maven.apache.org/POM/4.0.0
naamruimte.