X-Git-Url: https://git.ladys.computer/Shushe/blobdiff_plain/751a861d9f521d4c8472bb754e7438e675aaf8a5..d3431e949fbbc8147ba188cb774e5176adf9fe18:/lib/catalog2transform.xslt?ds=sidebyside diff --git a/lib/catalog2transform.xslt b/lib/catalog2transform.xslt index 04c38f9..3fb4c33 100644 --- a/lib/catalog2transform.xslt +++ b/lib/catalog2transform.xslt @@ -45,6 +45,43 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <xslt:variable name="书社:result"> <xslt:apply-templates select="exsl:node-set($书社:expansion)/node()"/> </xslt:variable> + <xslt:variable name="书社:destination"> + <xslt:choose> + <xslt:when test="string($书社:source/@书社:destination)!=''"> + <xslt:value-of select="$书社:source/@书社:destination"/> + </xslt:when> + <xslt:when test="starts-with($PATH, '/')"> + <xslt:value-of select="substring-after($PATH, '/')"/> + </xslt:when> + <xslt:otherwise> + <xslt:value-of select="$PATH"/> + </xslt:otherwise> + </xslt:choose> + </xslt:variable> + <xslt:variable name="书社:pagedestination"> + <xslt:variable name="dir"> + <xslt:for-each select="exslstr:tokenize($书社:destination, '/')[not(position()=last())]"> + <xslt:value-of select="."/> + <xslt:text>/</xslt:text> + </xslt:for-each> + </xslt:variable> + <xslt:variable name="name" select="string(exslstr:tokenize($书社:destination, '/')[last()])"/> + <xslt:value-of select="$dir"/> + <xslt:choose> + <xslt:when test="contains($name, '%s')"> + <xslt:value-of select="$name"/> + </xslt:when> + <xslt:when test="contains($name, '.')"> + <xslt:value-of select="substring-before($name, '.')"/> + <xslt:text>%s.</xslt:text> + <xslt:value-of select="substring-after($name, '.')"/> + </xslt:when> + <xslt:otherwise> + <xslt:value-of select="$name"/> + <xslt:text>%s</xslt:text> + </xslt:otherwise> + </xslt:choose> + </xslt:variable> <for-each select="//catalog:uri"> <xslt:include href="{@uri}"> <if test="contains(@name, ':')"> @@ -271,10 +308,34 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <xslt:apply-templates select="@*|node()" mode="书社:application"/> </xslt:copy> </xslt:template> - <xslt:template match="@书社:destination|@书社:disable-output-wrapping|@书社:archived-as[../ancestor::*[not(self::书社:apply-attributes-to-root or self::书社:apply-attributes)]]" mode="书社:application" priority="1"/> - <xslt:template match="书社:archive" mode="书社:application" priority="1"> + <xslt:template match="@书社:destination[not(../self::书社:page)]|@书社:disable-output-wrapping|@书社:archived-as[../ancestor::*[not(self::书社:apply-attributes-to-root or self::书社:apply-attributes)]]" mode="书社:application" priority="1"/> + <xslt:template match="书社:archive|书社:page" mode="书社:application" priority="1"> <xslt:copy> - <xslt:for-each select="@*|node()"> + <xslt:for-each select="@*"> + <xslt:choose> + <xslt:when test="../self::书社:archive and local-name()='archived-as' and namespace-uri()='&书社;' and ../ancestor::*[not(self::书社:apply-attributes-to-root or self::书社:apply-attributes)]"/> + <xslt:otherwise> + <xslt:apply-templates select="." mode="书社:application"/> + </xslt:otherwise> + </xslt:choose> + </xslt:for-each> + <xslt:if test="self::书社:page and not(@书社:destination)"> + <xslt:attribute name="书社:destination"> + <xslt:value-of select="substring-before($书社:pagedestination, '%s')"/> + <xslt:text>%22%7B</xslt:text> + <xslt:choose> + <xslt:when test="@name"> + <xslt:value-of select="@name"/> + </xslt:when> + <xslt:otherwise> + <xslt:value-of select="count(ancestor::书社:page|preceding::书社:page)+1"/> + </xslt:otherwise> + </xslt:choose> + <xslt:text>%7D%22</xslt:text> + <xslt:value-of select="substring-after($书社:pagedestination, '%s')"/> + </xslt:attribute> + </xslt:if> + <xslt:for-each select="node()"> <xslt:choose> <xslt:when test="self::*"> <xslt:variable name="component"> @@ -291,7 +352,6 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </xslt:variable> <xslt:apply-templates select="exsl:node-set($component)/node()" mode="书社:application"/> </xslt:when> - <xslt:when test="../ancestor::*[not(self::书社:apply-attributes-to-root or self::书社:apply-attributes)] and local-name()='archived-as' and namespace-uri()='&书社;'"/> <xslt:otherwise> <xslt:apply-templates select="." mode="书社:application"/> </xslt:otherwise>