AQName
はネームスペース修飾名です。2 つを含む 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 パーサーは、短い名前 (省略名) を長い名前 (拡張名) に変換するための規則を知っています。
名前の省略形は、解析時に静的に長い名前に解決できます。
QNames
データで使用することもできます。次の XML では、<log>
要素の値は aQName
です。
<network-traffic xmlns:network="http://www.network-traffic.org">
<log>network:client-error</log>
</network-traffic>
XML パーサーは、データではなく、マークアップのみを操作します。そのため、XML パーサーは短い名前を長い名前に変換しません。短い名前から長い名前へのマッピングは、XSLT プロセッサや XML スキーマ バリデータなどの上位レベルのアプリケーションで行う必要があります。つまり、短い名前から長い名前への解決は、静的ではなく動的に行う必要があります。
質問: 短い名前を長い名前に静的に解決するほうがよいのはなぜですか? 短い名前を長い名前に動的に解決することの欠点は何ですか? 短い名前を長い名前に動的に解決しなければならない結果として問題が発生する具体的な例を教えてください。QNames の静的解析の実際的な利点は何ですか?