<link> defines an association or hypertextual link among elements or passages, of some type not more precisely specifiable by other elements. [16.1 Links]
Modulelinking — 16 Linking, Segmentation, and Alignment
Attributesatt.global (@xml:id, @n, @xml:lang, @rend, @rendition, @xml:base, @xml:space) (att.global.linking (@corresp, @synch, @sameAs, @copyOf, @next, @prev, @exclude, @select)) (att.global.analytic (@ana)) (att.global.facs (@facs)) (att.global.change (@change)) att.pointing (@targetLang, @target, @evaluate) att.typed (@type, @subtype)
targetsspecifies the identifiers of the elements or passages to be linked or associated.
Status Optional
Datatype 2–∞ occurrences of 

<rng:ref name="data.pointer"/>
data.pointer
separated by whitespace
Values two or more pointers (URIs), separated by whitespace
Note
This attribute is deprecated. It is retained for backward compatibility only; the attribute target should be used for preference. It is an error to supply both attributes, but one or the other must be present.
Used by
Contained by
analysis: cl m phr s span w
figures: cell figure table
linking: ab linkGrp seg
nets: graph
spoken: u writing
tagdocs: valDesc
textcrit: app lem rdg wit witDetail
verse: metSym rhyme
May containEmpty element
Declaration

<rng:element name="link">
 <rng:ref name="att.global.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.pointing.attributes"/>
 <rng:ref name="att.typed.attributes"/>
 <rng:optional>
  <rng:attribute name="targets">
   <rng:list>
    <rng:ref name="data.pointer"/>
    <rng:ref name="data.pointer"/>
    <rng:zeroOrMore>
     <rng:ref name="data.pointer"/>
    </rng:zeroOrMore>
   </rng:list>
  </rng:attribute>
 </rng:optional>
 <rng:empty/>
</rng:element>
element link
{
   att.global.attributes,
   att.global.linking.attributes,
   att.global.analytic.attributes,
   att.global.facs.attributes,
   att.global.change.attributes,
   att.pointing.attributes,
   att.typed.attributes,
   attribute targets { list { data.pointer, data.pointer, data.pointer* } }?,
   empty
}
Schematron

<sch:report test="@target and @targets">You may not supply both
@target and @targets</sch:report>
Schematron

<sch:report test="not(@target) and not(@targets)">You must
supply either @target or @targets</sch:report>
Schematron

<sch:assert test="contains(@target,' ')">You must supply at least two
values for @target</sch:assert>
Example
<s n="1">The state Supreme Court has refused to release <rs xml:id="R1">
  <rs xml:id="R2">Rahway State Prison</rs> inmate</rs>
 <rs xml:id="R3">James Scott</rs> on bail.</s>
<s n="2">
 <rs xml:id="R4">The fighter</rs> is serving 30-40 years
for a 1975 armed robbery conviction in <rs xml:id="R5">the penitentiary</rs>.
</s>
<!-- ... -->
<linkGrp type="periphrasis">
 <link target="#R1 #R3 #R4"/>
 <link target="#R2 #R5"/>
</linkGrp>
Note
This element should only be used to encode associations not otherwise provided for by more specific elements.
The location of this element within a document has no significance, unless it is included within a linkGrp, in which case it may inherit the value of the type attribute from the value given on the linkGrp.