</otherwise>
</choose>
</template>
+ <template name="LesML:break-and-unescape">
+ <param name="source"/>
+ <variable name="broken-fragment">
+ <call-template name="LesML:split">
+ <with-param name="source" select="$source"/>
+ <with-param name="separator" select="'
'"/>
+ </call-template>
+ </variable>
+ <variable name="broken" select="exsl:node-set($broken-fragment)/node()"/>
+ <for-each select="$broken">
+ <call-template name="LesML:unescape">
+ <with-param name="source" select="string()"/>
+ </call-template>
+ <if test="position()!=count($broken)">
+ <html:br/>
+ </if>
+ </for-each>
+ </template>
<template name="LesML:unescape">
<param name="source"/>
<choose>
<when test="starts-with($source, '¶')">
<choose>
<when test="contains($source, ' ')">
- <attribute name="id">
- <value-of select="substring-before(substring-after($source, '¶'), ' ')"/>
- </attribute>
+ <variable name="id" select="substring-before(substring-after($source, '¶'), ' ')"/>
+ <if test="$id!=''">
+ <attribute name="id">
+ <value-of select="$id"/>
+ </attribute>
+ </if>
<value-of select="substring-after($source, ' ')"/>
</when>
<otherwise>
<variable name="prev-last" select="$last-lines[($position)-1]"/>
<variable name="linespans" select="$lines[following-sibling::*[generate-id()=generate-id(current())] and (not($prev-last) or preceding-sibling::*[generate-id()=generate-id($prev-last)]) and normalize-space()!='']|."/>
<variable name="quoted" select="not($linespans[not(starts-with(., ' ') or starts-with(., '	'))])"/>
+ <variable name="preformatted" select="not($linespans[not(starts-with(normalize-space(), '|'))])"/>
<variable name="text">
<for-each select="$linespans">
- <value-of select="normalize-space()"/>
+ <choose>
+ <when test="$preformatted">
+ <value-of select="substring-after(., '|')"/>
+ </when>
+ <otherwise>
+ <value-of select="normalize-space()"/>
+ </otherwise>
+ </choose>
<if test="position()!=count($linespans)">
- <text> </text>
+ <choose>
+ <when test="$preformatted">
+ <text>
</text>
+ </when>
+ <otherwise>
+ <text> </text>
+ </otherwise>
+ </choose>
</if>
</for-each>
</variable>
<if test="string($text)!=''">
<variable name="par">
<choose>
+ <when test="$preformatted">
+ <html:pre>
+ <call-template name="LesML:id-and-contents">
+ <with-param name="source" select="$text"/>
+ </call-template>
+ </html:pre>
+ </when>
<when test="starts-with($text, '⁌') and &sigiled-text;">
<html:h1>
<call-template name="LesML:id-and-contents">
</copy>
</template>
<template match="text()" mode="LesML:finalize-tree">
- <call-template name="LesML:unescape">
+ <call-template name="LesML:break-and-unescape">
<with-param name="source" select="string(.)"/>
</call-template>
</template>