From: Lady <redacted> Date: Sat, 14 Dec 2024 02:32:59 +0000 (-0500) Subject: Don’t use literal result elements X-Git-Tag: 0.3.1^0 X-Git-Url: https://git.ladys.computer/LesML/commitdiff_plain/refs/heads/current Don’t use literal result elements It’s simpler and cleaner to always just create elements with `<xslt:element>`, as these never inherit name·spaces from their surrounding context. --- diff --git a/parser.xslt b/parser.xslt index fbfa624..bd510b0 100644 --- a/parser.xslt +++ b/parser.xslt @@ -62,7 +62,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <with-param name="source" select="string()"/> </call-template> <if test="position()!=count($broken)"> - <html:br/> + <element name="html:br"/> </if> </for-each> </template> @@ -219,7 +219,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </if> <if test="$shebang!='' or $doclines[normalize-space()!='']"> <variable name="record-separators" select="$doclines[starts-with(., '%%')]"/> - <html:article> + <element name="html:article"> <for-each select="$params/html:div/html:dt[string()=' LANG ']"> <attribute name="lang"> <value-of select="following-sibling::html:dd"/> @@ -234,23 +234,26 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </attribute> </for-each> <if test="$record-separators[preceding-sibling::*[normalize-space()!='']]"> - <html:footer class="head"> + <element name="html:footer"> + <attribute name="class"> + <text>head</text> + </attribute> <for-each select="$record-separators"> <variable name="position" select="position()"/> <variable name="prev-separator" select="$record-separators[($position)-1]"/> <variable name="fields" select="$noshebang[following-sibling::*[generate-id()=generate-id(current())] and (not($prev-separator) or preceding-sibling::*[generate-id()=generate-id($prev-separator)])]"/> <if test="$fields"> - <html:dl> + <element name="html:dl"> <for-each select="$fields"> <choose> <when test="starts-with(., ' ') and $fields[generate-id()=generate-id(current()/preceding-sibling::*[1])]"/> <otherwise> <variable name="next" select="following-sibling::*[not(starts-with(., ' '))]"/> - <html:div> - <html:dt> + <element name="html:div"> + <element name="html:dt"> <value-of select="normalize-space(substring-before(., ':'))"/> - </html:dt> - <html:dd> + </element> + <element name="html:dd"> <variable name="firstline"> <choose> <when test="contains(., ':')"> @@ -280,12 +283,12 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </otherwise> </choose> </for-each> - </html:dd> - </html:div> + </element> + </element> </otherwise> </choose> </for-each> - </html:dl> + </element> </if> <if test=".!='%%'"> <comment> @@ -293,14 +296,17 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </comment> </if> </for-each> - </html:footer> + </element> </if> - <html:div class="body"> + <element name="html:div"> + <attribute name="class"> + <text>body</text> + </attribute> <call-template name="LesML:paragraphize"> <with-param name="lines" select="$doclines[not($record-separators) or preceding-sibling::*[generate-id()=generate-id($record-separators[last()])]]"/> </call-template> - </html:div> - </html:article> + </element> + </element> </if> <if test="$docsep"> <call-template name="LesML:parse"> @@ -345,165 +351,246 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <variable name="par"> <choose> <when test="$preformatted"> - <html:pre> + <element name="html:pre"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="$text"/> </call-template> - </html:pre> + </element> </when> <when test="starts-with($text, '⁌') and &sigiled-text;"> - <html:h1> + <element name="html:h1"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:h1> + </element> </when> <when test="starts-with($text, '§') and &sigiled-text;"> - <html:h2> + <element name="html:h2"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:h2> + </element> </when> <when test="starts-with($text, '❦') and &sigiled-text;"> - <html:h3> + <element name="html:h3"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:h3> + </element> </when> <when test="starts-with($text, '✠') and &sigiled-text;"> - <html:h4> + <element name="html:h4"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:h4> + </element> </when> <when test="starts-with($text, '•') and &sigiled-text;"> - <html:li class="unordered" data-level="1"> - <html:p> + <element name="html:li"> + <attribute name="class"> + <text>unordered</text> + </attribute> + <attribute name="data-level"> + <text>1</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:li> + </element> + </element> </when> <when test="starts-with($text, '🔢') and &sigiled-text;"> - <html:li class="ordered" data-level="1"> - <html:p> + <element name="html:li"> + <attribute name="class"> + <text>ordered</text> + </attribute> + <attribute name="data-level"> + <text>1</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:li> + </element> + </element> </when> <when test="starts-with($text, '◦') and &sigiled-text;"> - <html:li class="unordered" data-level="2"> - <html:p> + <element name="html:li"> + <attribute name="class"> + <text>unordered</text> + </attribute> + <attribute name="data-level"> + <text>2</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:li> + </element> + </element> </when> <when test="starts-with($text, '🔠') and &sigiled-text;"> - <html:li class="ordered" data-level="2"> - <html:p> + <element name="html:li"> + <attribute name="class"> + <text>ordered</text> + </attribute> + <attribute name="data-level"> + <text>2</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:li> + </element> + </element> </when> <when test="starts-with($text, '▪') and &sigiled-text;"> - <html:li class="unordered" data-level="3"> - <html:p> + <element name="html:li"> + <attribute name="class"> + <text>unordered</text> + </attribute> + <attribute name="data-level"> + <text>3</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:li> + </element> + </element> </when> <when test="starts-with($text, '🔡') and &sigiled-text;"> - <html:li class="ordered" data-level="3"> - <html:p> + <element name="html:li"> + <attribute name="class"> + <text>ordered</text> + </attribute> + <attribute name="data-level"> + <text>3</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:li> + </element> + </element> </when> <when test="starts-with($text, '⁃') and &sigiled-text;"> - <html:li class="unordered" data-level="4"> - <html:p> + <element name="html:li"> + <attribute name="class"> + <text>unordered</text> + </attribute> + <attribute name="data-level"> + <text>4</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:li> + </element> + </element> </when> <when test="starts-with($text, '🔣') and &sigiled-text;"> - <html:li class="ordered" data-level="4"> - <html:p> + <element name="html:li"> + <attribute name="class"> + <text>ordered</text> + </attribute> + <attribute name="data-level"> + <text>4</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:li> + </element> + </element> </when> <when test="starts-with($text, '🛈') and &sigiled-text;"> - <html:div role="note" class="info"> - <html:p> + <element name="html:div"> + <attribute name="role"> + <text>note</text> + </attribute> + <attribute name="class"> + <text>info</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:div> + </element> + </element> </when> <when test="starts-with($text, '⯑') and &sigiled-text;"> - <html:div role="note" class="query"> - <html:p> + <element name="html:div"> + <attribute name="role"> + <text>note</text> + </attribute> + <attribute name="class"> + <text>query</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:div> + </element> + </element> </when> <when test="starts-with($text, '⚠︎') and &sigiled-text;"> - <html:div role="note" class="warn"> - <html:p> + <element name="html:div"> + <attribute name="role"> + <text>note</text> + </attribute> + <attribute name="class"> + <text>warn</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:div> + </element> + </element> </when> <when test="starts-with($text, '※') and &sigiled-text;"> - <html:div role="note" class="note"> - <html:p> + <element name="html:div"> + <attribute name="role"> + <text>note</text> + </attribute> + <attribute name="class"> + <text>note</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:div> + </element> + </element> </when> <when test="starts-with($text, '☡') and &sigiled-text;"> - <html:div role="note" class="caution"> - <html:p> + <element name="html:div"> + <attribute name="role"> + <text>note</text> + </attribute> + <attribute name="class"> + <text>caution</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:div> + </element> + </element> </when> <when test="starts-with($text, '⋯') and &sigiled-text;"> - <html:div class="continuation"> - <html:p> + <element name="html:div"> + <attribute name="class"> + <text>continuation</text> + </attribute> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="&unsigiled-text;"/> </call-template> - </html:p> - </html:div> + </element> + </element> </when> <when test="starts-with($text, '#') and &sigiled-text;"> <comment> @@ -511,22 +598,22 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </comment> </when> <otherwise> - <html:p> + <element name="html:p"> <call-template name="LesML:id-and-contents"> <with-param name="source" select="$text"/> </call-template> - </html:p> + </element> </otherwise> </choose> </variable> <choose> <when test="translate(string($text), '§ion-break; ', '')=''"> - <html:hr/> + <element name="html:hr"/> </when> <when test="$quoted"> - <html:blockquote> + <element name="html:blockquote"> <copy-of select="$par"/> - </html:blockquote> + </element> </when> <otherwise> <copy-of select="$par"/> @@ -582,18 +669,18 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <value-of select="substring-after($laststarttext, '— ')"/> <copy-of select="$laststarttext/following-sibling::node()"/> </variable> - <html:figure> + <element name="html:figure"> <copy> <apply-templates select="@*|$content-nodes[position()!=last()]" mode="LesML:finalize-tree"/> </copy> - <html:figcaption> + <element name="html:figcaption"> <for-each select="$content-nodes[last()]"> <copy> <apply-templates select="@*|exsl:node-set($caption)/node()" mode="LesML:finalize-tree"/> </copy> </for-each> - </html:figcaption> - </html:figure> + </element> + </element> </when> <otherwise> <copy> @@ -804,7 +891,10 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </variable> <copy-of select="$start-node/preceding-sibling::node()"/> <value-of select="substring-before($start-node, '{🔗')"/> - <html:a href="{$ltcomponent-nodes[last()]}"> + <element name="html:a"> + <attribute name="href"> + <value-of select="$ltcomponent-nodes[last()]"/> + </attribute> <choose> <when test="count($ltcomponent-nodes)>2 or normalize-space($ltcomponent-nodes[1])!=''"> <value-of select="$ltcomponent-nodes[1]"/> @@ -817,7 +907,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <value-of select="$ltcomponent-nodes[last()]"/> </otherwise> </choose> - </html:a> + </element> <copy-of select="exsl:node-set($processed-rest)/*/node()"/> </when> <otherwise>