在将 XML 转换为 HTML 时,我试图将外部参照元素作为链接输出,该链接带有自动生成的章节编号,该章节编号是从外部参照所指的章节元素中提取的。
例如,使用这样的 XML 源文件:
<chapter id="a_chapter">
<title>Title</title>
<para>...as seen in <xref linkend="some_other_chapter">.</para>
</chapter>
<chapter id="some_other_chapter">
<title>Title</title>
<para>Some text here.</para>
</chapter>
如果有两章,外部参照指的是第二章,则生成的 HTML 中的外部参照应输出如下:
<section id="a_chapter">
<h1>Title</h1>
<p>...as seen in <a href="#some_other_chapter">Chapter 2</a>.</p>
</section>
但我不确定如何计算外部参照 @linkend 引用的章节元素。我尝试使用 xsl:number,但无法在计数中使用 id() 函数:
<xsl:template match="xref">
<xsl:variable name="label">
<xsl:when test="id(@linkend)[self::chapter]"><xsl:text>Chapter </xsl:text></xsl:when>
</xsl:variable
<xsl:variable name="count">
<xsl:if test="id(@linkend)[self::chapter]"><xsl:number count="id(@linkend)/chapter" level="any" format="1"/></xsl:if>
</xsl:variable>
<a href="#{@linkend}">
<xsl:value-of select="$label"/><xsl:value-of select="$count"/>
</a>
</xsl:template>
我还尝试仅使用“章节”作为 xsl:number 计数的值,但这会为所有输出生成“章节 0”。
我离这里很远,还是只是犯了一个愚蠢的xpath错误?任何帮助将不胜感激。