QName
は、名前空間修飾名です。XML QNamesを動的に解決するよりも静的にXML QNamesを解決する方が良いのはなぜですか?
<ac:aircraft xmlns:ac="http://www.aircraft.org">
<ac:altitude>12,000 feet</ac:altitude>
</ac:aircraft>
2略記QNames
である:
ac:aircraft
ac:altitude
拡張QNames
である:
{http://www.aircraft.org}aircraft
{http://www.aircraft.org}altitude
XMLパーサーを省略(短縮名に変換するためのルールを知っているここで含むXML 2 QNames
であります名前)を長い名前(拡張名)に変換します。
名前の省略形は、解析時には長い名前に解決できます。
QNames
もデータに使用できます。次のXMLでは、<log>
要素の値がQName
です:
<network-traffic xmlns:network="http://www.network-traffic.org">
<log>network:client-error</log>
</network-traffic>
XMLパーサは、マークアップではなく、データ上でのみ動作します。したがって、XMLパーサは短い名前を長い名前に変換しません。短い名前から長い名前へのマッピングは、XSLTプロセッサーやXMLスキーマのバリデーターなどの上位アプリケーションによって行わなければなりません。つまり、短い名前から長い名前の解決は、ではなく、で、静的にはでなければなりません。
質問:短い名前を長い名前に静的に解決する方が良いのはなぜですか?ショートネームをロングネームに動的に解決することの短所は何ですか?短い名前を長い名前に動的に解決しなければならないため、どこで問題が発生するのかという具体的な例を教えてください。 QNameの静的分析にはどのようなメリットがありますか?
なぜあなたは質問をしているのかよくわからないので、役に立ちません。なぜ知りたいのか説明できますか? – kimbert
xml-devのリストMichael Kayは、XML名前空間に関するいくつかの問題を特徴付けました。彼は書いています:短縮形の名前が許されているなら、それは常に長い名前に静的に解決可能でなければなりません。これは、短い名前を長い名前(XMLパーサ)に変換するルールを知っているソフトウェアコンポーネントが短い名前の存在を検出できないため、「コンテンツのQName」の場合には不可能です。それを拡大する。そのため、短い名前から長い名前へのマッピングを、システム内の他のコンポーネントが使用できるようにする必要があります。 ...私はこれをよく理解したいと思います。 –
related:[XMLコンテンツの識別子としての修飾名(QNames)の使用](https://www.w3.org/2001/tag/doc/qnameids-2004-03-17) –