myGroup > myProject
 

name 要素

要素, 属性の名前を宣言する要素

  • 通常、要素や属性の名前を明示するためには、element要素, attribute要素 の name 属性 を用います。しかし、name要素 を用いても等価な結果が得られます。
  • name要素 を使うと、要素, 属性の名前の決め方を柔軟にすることが出来ます。

注意すべき点

  • name要素 の中身は有修飾名(qname)です。デフォルトの名前空間を持たない要素には、常に接頭辞が必要です。
  • 属性に使う場合は、常に「グローバルな属性」を想定しているため、常に接頭辞が必要になりますし、ローカルな属性の定義にも使えません。ただし、名前空間の宣言を全く行わない場合に限り、接頭辞が不要になります(と言うより、そもそも使えない)。
  • 二つ以上並べて書いてはなりません。ただし、choice要素 の子要素に複数記述し、名前の選択をさせることは可能です。
  • name要素 を使った場合、element要素, attribute要素 で name 属性 を使ってはなりません。

属性

  • この要素に固有な属性はありません。

使用例

例 1: name要素 と name 属性

<span class="codefrag">name</span>要素 と <span class="codefrag">name</span> 属性

以下の二つのスキーマ(の断片)は、等価なものと見倣されます。接頭辞の有無には関係ありません。

例1
<element name="庭:植物">
 <text/>
</element>
例2
<element>
 <name>庭:植物</name>
 <text/>
</element>

例 2: 名前に選択肢を設ける

名前に選択肢を設ける

例えば、ルート要素が 家屋 要素でも 田畑 要素でも良く、かつこれらの要素の取り得る中身が同一(名前, 場所が書ける)である場合は、以下のようなスキーマが書けるでしょう。

スキーマ例
<?xml version="1.0"?>
<element xmlns="http://relaxng.org/ns/structure/1.0">
 <choice>
  <name>家屋</name>
  <name>田畑</name>
 </choice>
 <element name="名前"><text/></element>
 <element name="場所"><text/></element>
</element>
妥当な XML 文書の例1
<?xml version="1.0"?>
<家屋>
 <名前>牧野啓文宅</名前>
 <場所>山里市五丁目三番地</場所>
</家屋>
妥当な XML 文書の例2
<?xml version="1.0"?>
<田畑>
 <名前>ラベンダー牧場</名前>
 <場所>柏原郡海里町3-2-1</場所>
</田畑>

属性に関して

ns 属性 でデフォルトの名前空間が明示されている場合、以下の二つは等価ではありません。名前空間の仕様により、「デフォルトの名前空間に属した属性」を表すことが出来ないためです。

例1
<element name="ゲーム" ns="http://www.sanada.org/">
 <attribute name="対象年齢">
  <text/>
 </attribute>
 <empty/>
</element>
例2
<element name="ゲーム" ns="http://www.sanada.org/">
 <attribute>
  <name>対象年齢</name>
  <text/>
 </attribute>
 <empty/>
</element>

ただし、xmlns:xxxx 属性 による宣言がなされている場合、以下の二つは等価です。当然ですが、娯楽:対象年齢 属性はグローバル属性になります。

例1
<element name="娯楽:ゲーム" xmlns:娯楽="http://www.sanada.org/">
 <attribute name="娯楽:対象年齢">
  <text/>
 </attribute>
 <empty/>
</element>
例2
<element name="娯楽:ゲーム" xmlns:娯楽="http://www.sanada.org/">
 <attribute>
  <name>娯楽:対象年齢</name>
  <text/>
 </attribute>
 <empty/>
</element>

参考文献