<join>

<join> バラバラにあるテキスト部分を参照し,ひとつのテキスト部分を指定する. 16.7 総合
モジュールlinking — 16 リンク,分割,統合
属性 att.pointing (@type, @evaluate)
targets 仮想要素へとまとめられる要素または一節の識別子を示す.
状態 必須
データ型 2–∞ occurrences of

<rng:ref name="data.pointer"/>
data.pointer
空白文字で区切られる
空白で区切られた,二つ以上の識別子(URI).
result 当該要素によりまとめられる要素名を示す.
状態 任意
データ型

<rng:ref name="data.name"/>
data.name
DTD中にある要素の共通識別子.
scope まとめられる対象が,要素全体(すなわち当該要素をルートとする部分 木全体),またはその子要素(すなわち部分木の枝)であるかどうかを示 す.
状態 推薦される
正当な値:
root
属性で示された根付き部分木がまとめられ,各部分木は,当該要素 で作られた仮想要素の子となる. [初期値]
branches
属性で示された部分木の子は,仮想要素の子となる(すなわち,当 該部分木の根は捨てられる.
当該モジュールを使用するもの
下位
core: desc gloss
tagdocs: altIdent equiv
宣言

<rng:element name="join">
<rng:ref name="att.global.attributes"/>
<rng:ref name="att.pointing.attributes"/>
<rng:attribute name="targets">
 <rng:list>
  <rng:ref name="data.pointer"/>
  <rng:oneOrMore>
   <rng:ref name="data.pointer"/>
  </rng:oneOrMore>
 </rng:list>
</rng:attribute>
<rng:optional>
 <rng:attribute name="result">
  <rng:ref name="data.name"/>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="scopea:defaultValue="root">
  <rng:choice>
   <rng:value>root</rng:value>
   <rng:value>branches</rng:value>
  </rng:choice>
 </rng:attribute>
</rng:optional>
<rng:zeroOrMore>
 <rng:ref name="model.glossLike"/>
</rng:zeroOrMore>
</rng:element>
element join
{
   att.global.attributes,
   att.pointing.attributes,
   attribute targets { list { data.pointer, data.pointer+ } },
   attribute result { data.name }?,
   attribute scope { "root" | "branches" }?,
   model.glossLike*
}

以下の例は,16.7 総合で解説されている.

<sp>
 <speaker>Hughie</speaker>
 <p>How does it go?
 <q>
   <l xml:id="frog_x1">da-da-da</l>
   <l xml:id="frog_l2">gets a new frog</l>
   <l>...</l>
  </q>
 </p>
</sp>
<sp>
 <speaker>Louie</speaker>
 <p>
  <q>
   <l xml:id="frog_l1">When the old pond</l>
   <l>...</l>
  </q>
 </p>
</sp>
<sp>
 <speaker>Dewey</speaker>
 <p>
  <q>...
  <l xml:id="frog_l3">It's a new pond.</l>
  </q>
 </p>
 <join targets="#frog_l1 #frog_l2 #frog_l3result="lgscope="root"/>
</sp>

要素joinは,属性targetsで示された3行から成る行グループ(lg)を示している.属性 scopeの値rootは,結果としてできた仮想要素が,データ内容からではなく,参照値#frog_l1 #frog_l2 #frog_l3で示されている3つの要素lから成ることを示している.

以下の例で,属性scopeの値<branchesは,要素listは捨てられ,要素join の属性targetsで示されたリストからひとつの仮想リストが構成されることを示している.

<p>Southern dialect (my own variety, at least) has only
<list xml:id="LP1">
  <item>
   <s>I done gone</s>
  </item>
  <item>
   <s>I done went</s>
  </item>
 </list> whereas Negro Non-Standard basilect has both these and
<list xml:id="LP2">
  <item>
   <s>I done go</s>
  </item>
 </list>.</p>
<p>White Southern dialect also has
<list xml:id="LP3">
  <item>
   <s>I've done gone</s>
  </item>
  <item>
   <s>I've done went</s>
  </item>
 </list> which, when they occur in Negro dialect, should probably
be considered as borrowings from other varieties of
English.</p>
<join
  result="list"
  xml:id="LST1"
  targets="#LP1 #LP2 #LP3"
  scope="branches">

 <desc>Sample sentences in Southern speech</desc>
</join>