Ein QName
ist ein Namespace-qualifizierter Name. Hier ist XML mit zwei QNames
:Warum ist es besser, XML-QNames statisch aufzulösen, als XML-QNames dynamisch aufzulösen?
<ac:aircraft xmlns:ac="http://www.aircraft.org">
<ac:altitude>12,000 feet</ac:altitude>
</ac:aircraft>
Die beiden abgekürzt QNames
sind:
ac:aircraft
ac:altitude
Die erweiterte QNames
sind:
{http://www.aircraft.org}aircraft
{http://www.aircraft.org}altitude
XML-Parser kennen die Regeln für Kurznamen Umwandlung (abgekürzt Namen) zu langen Namen (erweiterte Namen).
Die abgekürzte Form der Namen ist statisch - bei Parse-Zeit - auf die langen Namen auflösbar.
QNames
kann auch in Daten verwendet werden. In der folgenden XML, der Wert des <log>
Element ist ein QName
:
<network-traffic xmlns:network="http://www.network-traffic.org">
<log>network:client-error</log>
</network-traffic>
XML-Parser arbeiten nur auf Markup, keine Daten. Daher konvertiert ein XML-Parser den Kurznamen nicht in den Langnamen. Die Zuordnung von Kurzname zu Langname muss von einer übergeordneten Anwendung wie einem XSLT-Prozessor oder einem XML-Schema-Validierer vorgenommen werden. Mit anderen Worten, die Auflösung von Kurzname zu Langname muss dynamisch erfolgen, nicht statisch.
Frage: Warum ist es besser, kurze Namen zu langen Namen statisch aufzulösen? Was sind die Nachteile der dynamischen Auflösung von kurzen Namen zu langen Namen? Können Sie ein konkretes Beispiel dafür nennen, wo Probleme entstehen, wenn kurze Namen dynamisch in lange Namen aufgelöst werden müssen? Was sind die praktischen Vorteile für die statische Analyse von QNames?
Nicht sicher, warum Sie die Frage stellen, so ist es schwierig, sinnvoll zu reagieren. Kannst du erklären, warum du es wissen willst? – kimbert
Auf der XML-Dev-Liste charakterisierte Michael Kay einige der Probleme mit XML-Namespaces. Er schrieb: Wenn eine abgekürzte Form des Namens erlaubt ist, sollte sie immer statisch auf den langen Namen auflösbar sein.Dies ist bei "QNames in content" nicht möglich, da die Softwarekomponente, die die Regeln für die Konvertierung von Kurznamen in lange Namen kennt (der XML-Parser), das Vorhandensein eines Kurznamens nicht erkennen kann und daher nicht kann es ausweiten; Es muss daher die Zuordnung von Kurznamen zu Langnamen für andere Komponenten im System verfügbar machen. ... Ich möchte das besser verstehen. –
verwandt: [Verwenden von qualifizierten Namen (QNames) als Bezeichner in XML-Inhalten] (https://www.w3.org/2001/tag/doc/qnameids-2004-03-17) –