2017-08-19 2 views
0

Ich habe ein Stück von XML, die ich unterschreiben bin versucht, dann überprüfen, welche relativ Namespaces verwendet:XML - Warum werden relative Namespaces als ungültig betrachtet?

<Organization> 
    <OrganizationName xmlns:_xml="xml" _xml:lang="en">name</OrganizationName> 
    <OrganizationDisplayName xmlns:_xml="xml" _xml:lang="en">name</OrganizationDisplayName> 
    <OrganizationURL xmlns:_xml="xml" _xml:lang="en">http://www.example.com/</OrganizationURL> 
</Organization> 

OpenSAML wirft die folgende Ausnahme:

org.apache.xml.security.c14n. CanonicalizationException: Element Organisationsname hat einen relativen Namensraum: _xml = "xml"

Warum sind relativ schlecht Namespaces in Betracht gezogen? Sicher könnte der Parser den Namespace nur auflösen, wenn er den wahren Wert analysiert?

EDIT: gefunden einige weitere Informationen

Die Namespaces in XML 1.1 Dokument heißt es unter Punkt 2.2:

Diese Geringschätzung der relativen URI-Verweise wurde von einem W3C XML Plenary Ballot [Relative URI deprecation] entschieden. Es erklärt auch, dass "spätere Spezifikationen wie DOM, XPath, etc. keine Interpretation für sie definieren".

Dies wurde für die Ballot on relative URI References gewählt.

+1

Warum gibt es hier keinen absoluten Namespace-URI? – Tomalak

+1

der crewjam/saml-projekt [marshalled] (https://github.com/crewjam/saml/blob/master/metadata.go#L107) es auf diese Weise – smokedice

Antwort

1

Als die Namespaces-Spezifikation herausgehämmert wurde, gab es zwei Gedankengänge: Eine Gruppe dachte, dass ein Namespace nur ein Name sein sollte (eine Zeichenkette, die einfach für Eindeutigkeit gewählt wurde), die andere Gruppe dachte, dass es sollte Identifizieren Sie eine Ressource im Web, die eine Beschreibung des Inhalts des Namespaces enthält: vielleicht ein Schema, vielleicht etwas anderes. Wenn es nur eine Zeichenkette ist, dann ist jede Zeichenkette geeignet. Wenn es sich jedoch um den Speicherort einer Ressource handelt, würden Sie erwarten, dass eine relative Referenz mit dem Basis-URI des Elements, in dem sie angezeigt wird, aufgelöst wird. Zu diesem Zeitpunkt gab es keinen Raum für Kompromisse zwischen den beiden Denkrichtungen, und anstatt sich für eine oder die andere Gruppe zu entscheiden, entschied W3C, dass relative URIs als Namespace-Namen nicht erlaubt sein sollten - außer es war zu spät, um sie zu verbieten , so dass sie stattdessen veraltet waren.

Verwandte Themen