diff options
Link footnotes in article stream to appropriate single article page
Previously multiple footnotes on article stream pages caused conflicts between articles and as such only worked correctly for the first article on each stream page.
-rw-r--r-- | source/99_result/stream.xsl | 20 | ||||
-rw-r--r-- | utility/xhtml.xsl | 4 |
2 files changed, 22 insertions, 2 deletions
diff --git a/source/99_result/stream.xsl b/source/99_result/stream.xsl index 5469ff4..19fc539 100644 --- a/source/99_result/stream.xsl +++ b/source/99_result/stream.xsl @@ -59,6 +59,26 @@ </div> </xsl:template> +<xsl:template match="a" mode="xhtml"> + <xsl:choose> + <xsl:when test="(@class = 'footnote') or (@class = 'reversefootnote')"> + <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml"> + <xsl:copy-of select="@class"/> + <xsl:attribute name="href"> + <xsl:value-of select="concat('/article/', ancestor::entry/@handle, '/', @href)"/> + </xsl:attribute> + <xsl:apply-templates select="node()" mode="xhtml"/> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml"> + <xsl:copy-of select="@*"/> + <xsl:apply-templates select="node()" mode="xhtml"/> + </xsl:element> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + <xsl:template match="articles/entry" mode="resolve"> <h2> <xsl:text>ยป </xsl:text> diff --git a/utility/xhtml.xsl b/utility/xhtml.xsl index 2f54975..00f1ef2 100644 --- a/utility/xhtml.xsl +++ b/utility/xhtml.xsl @@ -12,13 +12,13 @@ </xsl:template> <xsl:template match="span" mode="xhtml"> - <span> + <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml"> <xsl:copy-of select="@*"/> <xsl:apply-templates select="node()" mode="xhtml"/> <xsl:if test="not(node())"> <xsl:comment></xsl:comment> </xsl:if> - </span> + </xsl:element> </xsl:template> <xsl:template match="comment() | processing-instruction()" mode="xhtml"> |