<join>

<join> (join) identifies a possibly fragmented segment of text, by pointing at the possibly discontiguous elements which compose it. [16.7 Aggregation]
Modul linking — Linking, Segmentation, and Alignment
Attribute att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.rendition (@rend, @style, @rendition)) (att.global.linking (@corresp, @synch, @sameAs, @copyOf, @next, @prev, @exclude, @select)) (att.global.analytic (@ana)) (att.global.facs (@facs)) (att.global.change (@change)) (att.global.responsibility (@cert, @resp)) (att.global.source (@source)) att.pointing (@targetLang, @target, @evaluate) att.typed (@type, @subtype)
result⚓︎ specifies the name of an element which this aggregation may be understood to represent.
Zustand Optional
Datentyp teidata.name
scope⚓︎ indicates whether the targets to be joined include the entire element indicated (the entire subtree including its root), or just the children of the target (the branches of the subtree).
Zustand Empfohlen
Datentyp teidata.enumerated
Gültige Werte:
root
the rooted subtrees indicated by the target attribute are joined, each subtree become a child of the virtual element created by the join [Vorgabe]
branches
the children of the subtrees indicated by the target attribute become the children of the virtual element (i.e. the roots of the subtrees are discarded)
Mitglied des
Enthalten in
analysis: cl m phr s span w
figures: cell figure table
nets: graph
spoken: u writing
tagdocs: eg valDesc
textcrit: lem rdg wit witDetail
verse: metSym rhyme
Kann enthalten
core: desc
Beispiel

The following example is discussed in section 16.7 Aggregation:

<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 target="#frog_l1 #frog_l2 #frog_l3"
  result="lgscope="root"/>

</sp>

The join element here identifies a linegroup (lg) comprising the three lines indicated by the target attribute. The value root for the scope attribute indicates that the resulting virtual element contains the three l elements linked to at #frog_l1 #frog_l2 #frog_l3, rather than their character data content.

Beispiel

In this example, the attribute scope is specified with the value of branches to indicate that the virtual list being constructed is to be made by taking the lists indicated by the target attribute of the join element, discarding the list tags which enclose them, and combining the items contained within the lists into a single virtual list:

<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="listxml:id="LST1"
 target="#LP1 #LP2 #LP3scope="branches">

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

<sch:assert test="contains(@target,' ')">You must supply at least two values for @target on <sch:name/>
</sch:assert>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">

  <classRef key="model.descLike"/>
  <classRef key="model.certLike"/>
 </alternate>
</content>
Schema Deklaration
<rng:element name="join">
 <rng:ref name="att.global.attributes"/>
 <rng:ref name="att.global.rendition.attributes"/>
 <rng:ref name="att.global.linking.attributes"/>
 <rng:ref name="att.global.analytic.attributes"/>
 <rng:ref name="att.global.facs.attributes"/>
 <rng:ref name="att.global.change.attributes"/>
 <rng:ref name="att.global.responsibility.attributes"/>
 <rng:ref name="att.global.source.attributes"/>
 <rng:ref name="att.pointing.attributes"/>
 <rng:ref name="att.typed.attributes"/>
 <rng:optional>
  <rng:attribute name="result">
   <rng:ref name="teidata.name"/>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="scope"
   a:defaultValue="root">

   <rng:choice>
    <rng:value>root</rng:value>
    <rng:value>branches</rng:value>
   </rng:choice>
  </rng:attribute>
 </rng:optional>
 <rng:zeroOrMore>
  <rng:choice>
   <rng:ref name="model.descLike"/>
   <rng:ref name="model.certLike"/>
  </rng:choice>
 </rng:zeroOrMore>
</rng:element>
element join
{
   att.global.attributes,
   att.global.rendition.attributes,
   att.global.linking.attributes,
   att.global.analytic.attributes,
   att.global.facs.attributes,
   att.global.change.attributes,
   att.global.responsibility.attributes,
   att.global.source.attributes,
   att.pointing.attributes,
   att.typed.attributes,
   attribute result { teidata.name }?,
   attribute scope { "root" | "branches" }?,
   ( model.descLike | model.certLike )*
}