<alt>

<alt> (alternation) identifies an alternation or a set of choices among elements or passages. 16.8 Alternation
Module linking — 16 Linking, Segmentation, and Alignment
In addition to global attributes att.pointing (@target, @evaluate) att.typed (@type, @subtype)
targets specifies the identifiers of the alternative elements or passages.
Status Optional
Datatype 2–∞ occurrences of 

<rng:ref name="data.pointer"/>
data.pointer
separated by whitespace
Values Each value specified must be the same as that specified as value for an xml:id attribute for some other element in the current document.
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.
mode states whether the alternations gathered in this collection are exclusive or inclusive.
Status Recommended
Legal values are:
excl
(exclusive) indicates that the alternation is exclusive, i.e. that at most one of the alternatives occurs.
incl
(inclusive) indicates that the alternation is not exclusive, i.e. that one or more of the alternatives occur.
weights If mode is excl, each weight states the probability that the corresponding alternative occurs. If mode is incl each weight states the probability that the corresponding alternative occurs given that at least one of the other alternatives occurs.
Status Optional
Datatype 2–∞ occurrences of 

<rng:ref name="data.probability"/>
data.probability
separated by whitespace
Values a whitespace-separated list of probability values in the range from 0 to 1.
Note
If mode is excl, the sum of weights must be 1. If mode is incl, the sum of weights must be in the range from 0 to the number of alternants.
Used by
May contain Empty element
Declaration

<rng:element name="alt">
 <rng:ref name="att.global.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:optional>
  <rng:attribute name="mode">
   <rng:choice>
    <rng:value>excl</rng:value>
    <rng:value>incl</rng:value>
   </rng:choice>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="weights">
   <rng:list>
    <rng:ref name="data.probability"/>
    <rng:ref name="data.probability"/>
    <rng:zeroOrMore>
     <rng:ref name="data.probability"/>
    </rng:zeroOrMore>
   </rng:list>
  </rng:attribute>
 </rng:optional>
 <rng:empty/>
</rng:element>
element alt
{
   att.global.attributes,
   att.pointing.attributes,
   att.typed.attributes,
   attribute targets { list { data.pointer, data.pointer, data.pointer* } }?,
   attribute mode { "excl" | "incl" }?,
   attribute weights
   {
      list { data.probability, data.probability, data.probability* }
   }?,
   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
<alt mode="excl" targets="#we.fun #we.sun" weights="0.5 0.5"/>