]> Lady’s Gitweb - LesML/blobdiff - parser.xslt
Support language tag and profile
[LesML] / parser.xslt
index f2279d877cbdc5ac58e7491c80e2fa409bbd9fe8..86c28ea1a31bade3aeefb20e4cd3c9779c3e1dba 100644 (file)
@@ -122,6 +122,12 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
        </template>
        <template name="LesML:parse">
                <param name="source"/>
        </template>
        <template name="LesML:parse">
                <param name="source"/>
+               <param name="parent-params" select="/.."/>
+               <variable name="shebang">
+                       <if test="starts-with($source, '#!lesml')">
+                               <value-of select="substring-before($source, '&#xA;')"/>
+                       </if>
+               </variable>
                <variable name="noshebang">
                        <text>&#xA;</text>
                        <choose>
                <variable name="noshebang">
                        <text>&#xA;</text>
                        <choose>
@@ -133,6 +139,53 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                </otherwise>
                        </choose>
                </variable>
                                </otherwise>
                        </choose>
                </variable>
+               <variable name="params-string">
+                       <choose>
+                               <when test="starts-with($shebang, '#!lesml@')">
+                                       <value-of select="substring-after($shebang, '$')"/>
+                               </when>
+                               <otherwise>
+                                       <value-of select="substring-after($shebang, '#!lesml')"/>
+                               </otherwise>
+                       </choose>
+               </variable>
+               <variable name="params-fragment">
+                       <html:dl>
+                               <if test="starts-with($shebang, '#!lesml@') and contains($shebang, '$')">
+                                       <html:div>
+                                               <html:dt>
+                                                       <text> LANG </text>
+                                               </html:dt>
+                                               <html:dd>
+                                                       <value-of select="substring-before(substring-after($shebang, '#!lesml@'), '$')"/>
+                                               </html:dd>
+                                       </html:div>
+                               </if>
+                               <for-each select="exslstr:tokenize($params-string)">
+                                       <choose>
+                                               <when test="contains(., '=')">
+                                                       <html:div>
+                                                               <html:dt>
+                                                                       <value-of select="substring-before(., '=')"/>
+                                                               </html:dt>
+                                                               <html:dd>
+                                                                       <value-of select="substring-after(., '=')"/>
+                                                               </html:dd>
+                                                       </html:div>
+                                               </when>
+                                               <otherwise>
+                                                       <html:div>
+                                                               <html:dt>
+                                                                       <value-of select="."/>
+                                                               </html:dt>
+                                                               <html:dd/>
+                                                       </html:div>
+                                               </otherwise>
+                                       </choose>
+                               </for-each>
+                       </html:dl>
+               </variable>
+               <variable name="params" select="exsl:node-set($params-fragment)/*"/>
                <variable name="records">
                        <call-template name="LesML:split">
                                <with-param name="source" select="$noshebang"/>
                <variable name="records">
                        <call-template name="LesML:split">
                                <with-param name="source" select="$noshebang"/>
@@ -141,6 +194,19 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                </variable>
                <variable name="record-nodes" select="exsl:node-set($records)/*"/>
                <html:article>
                </variable>
                <variable name="record-nodes" select="exsl:node-set($records)/*"/>
                <html:article>
+                       <for-each select="$params/html:div/html:dt[string()=' LANG ']">
+                               <attribute name="lang">
+                                       <value-of select="following-sibling::html:dd"/>
+                               </attribute>
+                               <attribute name="xml:lang">
+                                       <value-of select="following-sibling::html:dd"/>
+                               </attribute>
+                       </for-each>
+                       <for-each select="$params/html:div/html:dt[string()='profile']">
+                               <attribute name="data-lesml-profile">
+                                       <value-of select="following-sibling::html:dd"/>
+                               </attribute>
+                       </for-each>
                        <if test="count($record-nodes)>1">
                                <html:footer class="head">
                                        <for-each select="$record-nodes[not(position()=last() or normalize-space(.)='')]">
                        <if test="count($record-nodes)>1">
                                <html:footer class="head">
                                        <for-each select="$record-nodes[not(position()=last() or normalize-space(.)='')]">
This page took 0.082371 seconds and 4 git commands to generate.