name 要素

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

注意すべき点

具体例

name 要素と name 属性

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

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

名前に選択肢を設ける

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

スキーマ例
<?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:xx 属性による宣言がなされている場合、以下の二つは等価です。当然ですが、娯楽:対象年齢 属性はグローバル属性になります。

例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>