在 XSL 中引用数字
Referencing figures in XSL
问题: 我正在尝试引用 HTML 文本中的图形,它是一个内部 link 指向图形的标题。
图的 XML 代码和引用是这样的:
(...) As it can be seen in the Figure <p:iref intref="f1"/> (...)
<float:figure id="f1">
<float:graphic path="f1.jpg"/>
<float:caption>
<p:p> Some text </p:p>
</float:caption>
处理图形的XSL代码如下:
<xsl:template match="float:figure">
<a name="{@id}"></a>
<br/>
<xsl:apply-templates select="float:graphic"/>
<br/>
<center>
<b>Figure <xsl:value-of select="count(preceding::float:figure)+1"/> - </b> <xsl:value-of select="float:caption"/>
</center>
<br/>
</xsl:template>
<xsl:template match="//float:graphic">
<xsl:variable name="path" select="./@path"/>
<center>
<img src="{$path}"/>
</center>
</xsl:template>
现在,参考数字:
<xsl:template match="p:iref">
<xsl:variable name="fid" select="@intref"/>
<xsl:if test="//float:figure/@id=$fid">
<a href="#{$fid}"><xsl:value-of select="count(preceding::float:figure)+1"/></a>
</xsl:if>
</xsl:template>
问题是:当引用 (intref) 出现在图形之前时,引用工作正常。但是当我想引用已经通过的图像时,虽然 link 工作正常,但它引用了一个不同的数字。
示例:
HTML中的当前结果:
(...) As it can be seen in Figure 1 (...)
-----------some Figure------------
Figure 1 - some text
(...) and like we've seen back then, in Figure 2 (...)
HTML 中的预期结果:
(...) As it can be seen in Figure 1 (...)
-----------some Figure------------
Figure 1 - some text
(...) and like we've seen back then, in Figure 1 (...)
所以看起来,虽然引用很好(在第一个输出中,如果我单击 link,它是图 2 中的数字 2,它引用了图 1)出现图 2 ...
有什么建议吗?
您需要计算引用图形中的 preceding::float:figure
个元素,而不是引用本身。怎么样:
<xsl:template match="p:iref">
<xsl:variable name="fid" select="@intref"/>
<xsl:variable name="target" select="//float:figure[@id=$fid]"/>
<xsl:if test="$target">
<a href="#{$fid}"><xsl:value-of select="count($target/preceding::float:figure)+1"/></a>
</xsl:if>
</xsl:template>
问题: 我正在尝试引用 HTML 文本中的图形,它是一个内部 link 指向图形的标题。
图的 XML 代码和引用是这样的:
(...) As it can be seen in the Figure <p:iref intref="f1"/> (...)
<float:figure id="f1">
<float:graphic path="f1.jpg"/>
<float:caption>
<p:p> Some text </p:p>
</float:caption>
处理图形的XSL代码如下:
<xsl:template match="float:figure">
<a name="{@id}"></a>
<br/>
<xsl:apply-templates select="float:graphic"/>
<br/>
<center>
<b>Figure <xsl:value-of select="count(preceding::float:figure)+1"/> - </b> <xsl:value-of select="float:caption"/>
</center>
<br/>
</xsl:template>
<xsl:template match="//float:graphic">
<xsl:variable name="path" select="./@path"/>
<center>
<img src="{$path}"/>
</center>
</xsl:template>
现在,参考数字:
<xsl:template match="p:iref">
<xsl:variable name="fid" select="@intref"/>
<xsl:if test="//float:figure/@id=$fid">
<a href="#{$fid}"><xsl:value-of select="count(preceding::float:figure)+1"/></a>
</xsl:if>
</xsl:template>
问题是:当引用 (intref) 出现在图形之前时,引用工作正常。但是当我想引用已经通过的图像时,虽然 link 工作正常,但它引用了一个不同的数字。
示例:
HTML中的当前结果:
(...) As it can be seen in Figure 1 (...)
-----------some Figure------------
Figure 1 - some text
(...) and like we've seen back then, in Figure 2 (...)
HTML 中的预期结果:
(...) As it can be seen in Figure 1 (...)
-----------some Figure------------
Figure 1 - some text
(...) and like we've seen back then, in Figure 1 (...)
所以看起来,虽然引用很好(在第一个输出中,如果我单击 link,它是图 2 中的数字 2,它引用了图 1)出现图 2 ...
有什么建议吗?
您需要计算引用图形中的 preceding::float:figure
个元素,而不是引用本身。怎么样:
<xsl:template match="p:iref">
<xsl:variable name="fid" select="@intref"/>
<xsl:variable name="target" select="//float:figure[@id=$fid]"/>
<xsl:if test="$target">
<a href="#{$fid}"><xsl:value-of select="count($target/preceding::float:figure)+1"/></a>
</xsl:if>
</xsl:template>