如果要导航到页面中的锚标记,则需要另一个链接,并将href属性设置为适当的值。例如,如果您的锚标记是这样的:
<a id="first">Bob</a>
那么您的链接将是这样的
<a href="#first">Bob</a>
在您的情况下,您希望锚点相互链接,因此两个a元素都将具有id和href
<a id="first_top" href="#first_bottom">Bob</a>
<a id="first_bottom" href="#first_top">Bob</a>
编写 XSLT 代码的一种方法是使用两个模板匹配people元素,但使用mode属性来区分它们
例如试试这个 XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/people">
<html>
<body>
<xsl:apply-templates select="person" mode="top"/>
<p>
Some content in the middle
</p>
<xsl:apply-templates select="person" mode="bottom"/>
</body>
</html>
</xsl:template>
<xsl:template match="person" mode="top">
<p>
<a id="{@id}_top" href="#{@id}_bottom">
<xsl:value-of select="name" />
</a>
</p>
</xsl:template>
<xsl:template match="person" mode="bottom">
<p>
<a id="{@id}_bottom" href="#{@id}_top">
<xsl:value-of select="name" />
</a>
</p>
</xsl:template>
</xsl:stylesheet>
这将输出以下内容(假设您有带有根元素的格式良好的 XML,并且所有标签都已关闭)
<html>
<body>
<p><a id="first_top" href="#first_bottom">Bob</a></p>
<p><a id="second_top" href="#second_bottom">smith</a></p>
<p><a id="third_top" href="#third_bottom">Lisa</a></p>
<p>Some content in the middle</p>
<p><a id="first_bottom" href="#first_top">Bob</a></p>
<p><a id="second_bottom" href="#second_top">smith</a></p>
<p><a id="third_bottom" href="#third_top">Lisa</a></p>
</body>
</html>
如果您想避免使用两个单独的模板来匹配人员元素,则可以将参数传递给模板以区分顶部和底部。这个 XSLT 也可以工作
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/people">
<html>
<body>
<xsl:apply-templates select="person">
<xsl:with-param name="idpos" select="'top'" />
<xsl:with-param name="hrefpos" select="'bottom'" />
</xsl:apply-templates>
<p>
Some content in the middle
</p>
<xsl:apply-templates select="person">
<xsl:with-param name="idpos" select="'bottom'" />
<xsl:with-param name="hrefpos" select="'top'" />
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="person">
<xsl:param name="idpos" />
<xsl:param name="hrefpos" />
<p>
<a id="{@id}_{$idpos}" href="#{@id}_{$hrefpos}">
<xsl:value-of select="name" />
</a>
</p>
</xsl:template>
</xsl:stylesheet>