5

XML名前空間の仕様では、接頭辞なしの属性の解釈は、それらが表示される要素によって決定されると説明されています。また、接頭辞のない属性名の名前空間名には常に値がありません

次の場合、このルールは属性の名前空間にどのように適用されますかjid

<query xmlns="jabber:iq:roster">
  <item jid="romeo@example.com"></item>
</query>

名前空間の宣言と問題の属性の両方にプレフィックスがない場合、属性jidは名前空間にありますjabber:iq:roster

<q:query xmlns:q="jabber:iq:roster">
  <q:item q:jid="romeo@example.com"></q:item>
</q:query>

名前空間の宣言と属性の両方に同じプレフィックスがある場合、属性にjidも名前空間がありますjabber:iq:roster

<q:query xmlns:q="jabber:iq:roster">
  <q:item jid="romeo@example.com"></q:item>
</q:query>

しかし、名前空間がプレフィックスで宣言されているが、属性にプレフィックスがない場合、どの名前空間が属性になりますか?私は、属性がjid

  1. 親要素で宣言されたデフォルトの名前空間があります。

    <parent xmlns="http://example.com">
      <q:query xmlns:q="jabber:iq:roster">
        <q:item jid="romeo@example.com"></q:item>
      </q:query>
    </parent>
    
  2. または、そのような宣言がない場合は、名前空間はありません。

私はこれを正しく理解しますか?

4

2 に答える 2

4

XPathおよびその他の仕様で使用される通常の解釈では、接頭辞のない属性は名前空間にありません。

名前空間の仕様ではそうは言われていないと主張する言語弁護士がいます。接頭辞のない属性は、語彙の設計者がそれが入っていると言っている名前空間にあると言っています。しかし、この解釈は実際にはあまり役に立ちません。重要なのはツールが行うことです。

于 2012-05-20T12:17:03.327 に答える
3

プレフィックスのない属性は常に空の名前空間にあります。つまり、名前空間はありません。囲んでいる要素に名前空間があるかどうかは関係ありません。これは、あなたが参照している2番目のステートメントを読んだものであり、これは私が使用したすべてのXMLツールの解釈です。

于 2012-05-20T12:17:34.613 に答える