<join>
join
identifies a possibly fragmented segment of text, by pointing at the possibly discontiguous elements which compose it.
Attributes
- @resultspecifies the name of an element which this aggregation may be understood to represent.
- Status
- Optional
- Datatype
- teidata.name
- @scopeindicates 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).
- Status
- Recommended
- Datatype
- teidata.enumerated
- Legal values
root- the rooted subtrees indicated by the @target attribute are joined, each subtree become a child of the virtual element created by the join
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)
Classes and content
- Member of
- May contain
core
- Contained by
cmc
core
dictionaries
drama
header
msdescription
- accMat
- acquisition
- additions
- catchwords
- collation
- collection
- colophon
- condition
- custEvent
- decoNote
- explicit
- filiation
- finalRubric
- foliation
- heraldry
- incipit
- institution
- layout
- material
- msItem
- musicNotation
- objectType
- origDate
- origin
- origPlace
- provenance
- repository
- rubric
- secFol
- signatures
- source
- stamp
- summary
- support
- surrogates
- typeNote
- watermark
namesdates
nets
textstructure
Examples
The following example is discussed in section 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="lg" scope="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.
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="list" xml:id="LST1" target="#LP1 #LP2 #LP3" scope="branches">
<desc>Sample sentences in Southern speech</desc>
</join>
Schematron
<constraintSpec xmlns:sch="http://purl.oclc.org/dsdl/schematron" ident="joinTargets3" scheme="schematron" xml:lang="en">
<constraint>
<sch:rule context="tei:join">
<sch:assert test="contains( normalize-space( @target ),' ')">
You must supply at least two values for @target on <<sch:name/>>.
</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>Content model
<content>
<alternate minOccurs="0" maxOccurs="unbounded">
<classRef key="model.descLike"/>
<classRef key="model.certLike"/>
</alternate>
</content>