<path>

<path> (path) defines any line passing through two or more points within a surface element. [11.1 Digital Facsimiles 11.2.2 Embedded Transcription]
Module transcr — Representation of Primary Sources
Attributes
points⚓︎ identifies a line within the container or bounding box specified by the parent element by means of a series of two or more pairs of numbers, each of which gives the x,y coordinates of a point on the line.
Derived from att.coordinated
Status Optional
Datatype 2–∞ occurrences of teidata.point separated by whitespace
Member of
Contained by
transcr: line surface zone
May contain Empty element
Note

Although the simplest form of a path is a straight line between two points, a line with more than two points may bend at any point. The order of coordinates in points is significant, because the line follows the coordinate sequence.

To specify a closed polygon, use the zone element rather than the path element.

Example
<surface ulx="0uly="0lrx="443lry="272">
 <graphic url="facs-fig3.jpg"/>
 <path points="74,73 171,244"/>
 <path points="71,203 173,116"/>
</surface>
Schematron Since a path> represents a line with distinct start and end points, the last coordinate should not be the same as the first coordinate.

<sch:rule context="tei:path[@points]">
<sch:let name="firstPair"
 value="tokenize( normalize-space( @points ), ' ')[1]"/>

<sch:let name="lastPair"
 value="tokenize( normalize-space( @points ), ' ')[last()]"/>

<sch:let name="firstX"
 value="xs:float( substring-before( $firstPair, ',') )"/>

<sch:let name="firstY"
 value="xs:float( substring-after( $firstPair, ',') )"/>

<sch:let name="lastX"
 value="xs:float( substring-before( $lastPair, ',') )"/>

<sch:let name="lastY"
 value="xs:float( substring-after( $lastPair, ',') )"/>

<sch:report test="$firstX eq $lastX and $firstY eq $lastY">The first and
last elements of this path are the same. To specify a closed polygon, use
the zone element rather than the path element. </sch:report>
</sch:rule>
Content model
<content>
 <empty/>
</content>
Schema Declaration
<rng:element name="path">
 <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.typed.attributes"/>
 <rng:ref name="att.written.attributes"/>
 <rng:ref name="att.coordinated.attribute.start"/>
 <rng:ref name="att.coordinated.attribute.ulx"/>
 <rng:ref name="att.coordinated.attribute.uly"/>
 <rng:ref name="att.coordinated.attribute.lrx"/>
 <rng:ref name="att.coordinated.attribute.lry"/>
 <rng:optional>
  <rng:attribute name="points">
   <rng:list>
    <rng:ref name="teidata.point"/>
    <rng:ref name="teidata.point"/>
    <rng:zeroOrMore>
     <rng:ref name="teidata.point"/>
    </rng:zeroOrMore>
   </rng:list>
  </rng:attribute>
 </rng:optional>
 <rng:empty/>
</rng:element>
element path
{
   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.typed.attributes,
   att.written.attributes,
   att.coordinated.attribute.start,
   att.coordinated.attribute.ulx,
   att.coordinated.attribute.uly,
   att.coordinated.attribute.lrx,
   att.coordinated.attribute.lry,
   attribute points { list { teidata.point, teidata.point, teidata.point* } }?,
   empty
}