xmlns, xmlns:xsi, xsi:schemaLocation en targetNamespace?

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:xsien xsi:schemaLocationprecies? Hoe zijn ze verwant? Waar is de :voor?

En er zijn 2 URL’s in de xsi:schemaLocation=

  1. http://maven.apache.org/POM/4.0.0( het is toevallig hetzelfde als xmlnsmaar het geeft een 404-fout bij het bezoeken.)
  2. 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)

  • xmlnsmaakt 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.0is de standaardnaamruimte voor de elementen in uw Maven-project .

  • xmlns:xsiverklaart 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 xsinamespace prefix aan http://www.w3.org/2001/XMLSchema-instance, die het gebruik van de volgende kenmerken op de juiste manier instelt:

    • xsi:typeHiermee 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:typewordt niet gebruikt; Inbegrepen hier voor volledigheid met betrekking tot xsi.

    • xsi:nilstaat toe dat een leeg element als geldig wordt beschouwd terwijl de XSD dit anders niet zou hebben toegestaan.

      In uw voorbeeldwordt xsi:nilniet gebruikt; hier opgenomen voor de volledigheid met betrekking tot xsi.

    • xsi:schemaLocationen xsi:noNamespaceSchemaLocationgeven hints aan de XML-processor over hoe een XSD te koppelen aan een XML-document. Gebruik xsi:schemaLocationals er een naamruimte is; gebruik xsi:noNamespaceSchemaLocationals er geen naamruimte is.

      In uw voorbeeldis er een naamruimte, dus u gebruikt xsi:schemaLocationcorrect, 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:noNamespaceSchemaLocationgebruiken, waarvan de waarde een enkele XSD-location-URIis die verwijst naar de locatie van de beoogde XSD en die moet kunnen worden opgehaald.

  • targetNamespaceis een attribuut op de xs:schemaroot
    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%

xmlnsdefinieert 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.0naamruimte 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:schemaLocationis een attribuut schemaLocationvan "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.xsdxsd-schema bevat met definitie van http://maven.apache.org/POM/4.0.0naamruimte.

Other episodes