]> Lady’s Gitweb - Shushe/blobdiff - lib/catalog2transform.xslt
Don’t use literal result elements in transforms
[Shushe] / lib / catalog2transform.xslt
index 68fb3a2b55c25f7aaa1368f7d5d8929fe5ddfe7f..b93aa371190c9eedb7502f90c628bf609eb8329a 100644 (file)
@@ -13,6 +13,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
 -->
 <!DOCTYPE transform [
        <!ENTITY 书社 "urn:fdc:ladys.computer:20231231:Shu1She4">
+       <!ENTITY xhtml "http://www.w3.org/1999/xhtml">
        <!ENTITY xml "http://www.w3.org/XML/1998/namespace">
 ]>
 <transform
@@ -21,7 +22,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
        xmlns:exsl="http://exslt.org/common"
        xmlns:exslfunc="http://exslt.org/functions"
        xmlns:exslstr="http://exslt.org/strings"
-       xmlns:html="http://www.w3.org/1999/xhtml"
+       xmlns:html="&xhtml;"
        xmlns:nie="http://www.semanticdesktop.org/ontologies/2007/01/19/nie#"
        xmlns:nfo="http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#"
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
@@ -62,13 +63,10 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                        <text>书社:document-with-attributes-applied</text>
                                </attribute>
                                <xslt:param name="document" select="/.."/>
-                               <xslt:param name="and-version" select="false()"/>
                                <xslt:variable name="application-result-fragment">
                                        <xslt:variable name="result-nodes" select="$document/node()[not(self::书社:apply-attributes-to-root)]|$document/书社:apply-attributes-to-root//node()[not(self::书社:apply-attributes-to-root) and not(ancestor::*[not(self::书社:apply-attributes-to-root)])]"/>
-                                       <xslt:variable name="significant-nodes" select="$result-nodes/descendant-or-self::*[not(self::书社:apply-attributes) and not(ancestor::*[not(self::书社:apply-attributes)])]"/>
                                        <xslt:variable name="root-with-attributes">
                                                <xslt:call-template name="书社:apply-attributes">
-                                                       <xslt:with-param name="and-version" select="$and-version"/>
                                                        <xslt:with-param name="context-nodes" select="$document//书社:apply-attributes-to-root"/>
                                                        <xslt:with-param name="destination-nodes" select="$result-nodes"/>
                                                </xslt:call-template>
@@ -93,7 +91,12 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                        </xslt:variable>
                        <xslt:variable name="书社:expansion" select="书社:document-with-attributes-applied(exsl:node-set($书社:expansion-fragment))"/>
                        <xslt:variable name="书社:result-fragment">
-                               <xslt:apply-templates select="$书社:expansion/node()"/>
+                               <xslt:element name="书社:apply-attributes-to-root">
+                                       <xslt:attribute name="书社:version">
+                                               <xslt:value-of select="$THISREV"/>
+                                       </xslt:attribute>
+                                       <xslt:apply-templates select="$书社:expansion/node()"/>
+                               </xslt:element>
                        </xslt:variable>
                        <xslt:variable name="书社:result" select="书社:document-with-attributes-applied(exsl:node-set($书社:result-fragment))"/>
                        <xslt:variable name="书社:destination" select="string($书社:about//*[@rdf:about=$IDENTIFIER]/@书社vocab:destination)"/>
@@ -105,7 +108,6 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                </xslt:include>
                        </for-each>
                        <xslt:template name="书社:apply-attributes">
-                               <xslt:param name="and-version" select="false()"/>
                                <xslt:param name="context-nodes" select="/.."/>
                                <xslt:param name="destination-nodes" select="/.."/>
                                <xslt:variable name="additional-attributes" select="$context-nodes/@*"/>
@@ -149,11 +151,6 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                                </xslt:choose>
                                                        </xslt:variable>
                                                        <xslt:copy>
-                                                               <xslt:if test="$and-version and $THISREV">
-                                                                       <xslt:attribute name="书社:version">
-                                                                               <xslt:value-of select="$THISREV"/>
-                                                                       </xslt:attribute>
-                                                               </xslt:if>
                                                                <xslt:if test="string($lang)!=''">
                                                                        <xslt:if test="self::html:* or self::svg:*">
                                                                                <xslt:attribute name="lang">
@@ -168,7 +165,6 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                                        <xslt:choose>
                                                                                <xslt:when test="@namespace-uri='&xml;'"/>
                                                                                <xslt:when test="$context[self::html:* or self::svg:*] and @namespace-uri='' and @local-name='lang'"/>
-                                                                               <xslt:when test="$and-version and $THISREV and @namespace-uri='&书社;' and @local-name='version'"/>
                                                                                <xslt:when test="@namespace-uri='&书社;' and (@local-name='destination' or @local-name='disable-output-wrapping')"/>
                                                                                <xslt:when test="preceding-sibling::*[@local-name=current()/@local-name and @namespace-uri=current()/@namespace-uri]"/>
                                                                                <xslt:otherwise>
@@ -225,7 +221,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                        <xslt:apply-templates select="$modalinput/node()" mode="书社:metadata"/>
                                </xslt:variable>
                                <xslt:variable name="metadata" select="exsl:node-set($metadata-fragment)"/>
-                               <html:html>
+                               <xslt:element name="html" namespace="&xhtml;">
                                        <xslt:copy-of select="$nodes[self::html:html]/@*"/>
                                        <xslt:if test="not($nodes[self::html:html]/@书社:archived-as) and $nodes/@书社:archived-as">
                                                <xslt:attribute name="书社:archived-as">
@@ -242,9 +238,9 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                        <xslt:value-of select="$nodes[self::html:*]/@lang|$nodes[self::svg:*]/@lang|$nodes/@xml:lang"/>
                                                </xslt:attribute>
                                        </xslt:if>
-                                       <html:head>
+                                       <xslt:element name="head" namespace="&xhtml;">
                                                <xslt:copy-of select="$nodes[self::html:html]/html:head/@*|$nodes[self::html:head]/@*"/>
-                                               <html:title>
+                                               <xslt:element name="title" namespace="&xhtml;">
                                                        <xslt:for-each select="$metadata/html:title">
                                                                <xslt:value-of select="."/>
                                                                <xslt:if test="position()!=last()">
@@ -253,9 +249,14 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                                        </xslt:text>
                                                                </xslt:if>
                                                        </xslt:for-each>
-                                               </html:title>
+                                               </xslt:element>
                                                <xslt:copy-of select="$metadata/node()[not(self::html:title or self::html:meta and @name='generator')]"/>
-                                               <html:meta name="generator">
+                                               <xslt:element name="meta" namespace="&xhtml;">
+                                                       <xslt:attribute name="name">
+                                                               <xslt:text>
+                                                                       <text>generator</text>
+                                                               </xslt:text>
+                                                       </xslt:attribute>
                                                        <xslt:attribute name="content">
                                                                <xslt:for-each select="$metadata/html:meta[@name='generator']">
                                                                        <xslt:value-of select="@content"/>
@@ -276,15 +277,15 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                                        </xslt:text>
                                                                </xslt:if>
                                                        </xslt:attribute>
-                                               </html:meta>
-                                       </html:head>
-                                       <html:body>
+                                               </xslt:element>
+                                       </xslt:element>
+                                       <xslt:element name="body" namespace="&xhtml;">
                                                <xslt:copy-of select="$nodes[self::html:html]/html:body/@*|$nodes[self::html:body]/@*"/>
                                                <xslt:apply-templates select="$modalinput/node()" mode="书社:header"/>
                                                <xslt:copy-of select="$nodes[not(self::html:html or self::html:head or self::html:body)]|$nodes[self::html:html]/node()[not(self::html:head or self::html:body)]|$nodes[self::html:html]/html:body/node()|$nodes[self::html:body]/node()"/>
                                                <xslt:apply-templates select="$modalinput/node()" mode="书社:footer"/>
-                                       </html:body>
-                               </html:html>
+                                       </xslt:element>
+                               </xslt:element>
                        </xslt:template>
                        <xslt:template match="/">
                                <xslt:variable name="finalization-fragment">
This page took 0.0447 seconds and 4 git commands to generate.