我在xml中使用此代码
参考引文XML中的LINKS:
Boulos <link href="#bib-0014"/>
对应参考:
<bib xml:id="bib-0014"><citation type="journal" xml:id="cit-0014"><author><familyName>Boulos</familyName>, <givenNames>L</givenNames></author>. **<pubYear year="1974">1974a</pubYear>**. <articleTitle>Révision systématique du genre <i>Sonchus</i> L. s.l. V. Sous‐genre 2. <i>Dendrosonchus</i>. – Bot</articleTitle>. <journalTitle>Not</journalTitle>. <vol>127</vol>: <pageFirst>7</pageFirst>–<pageLast>37</pageLast>.</citation></bib>
图形引用XML链接:
Fig <link href="#ecog340-fig-0001"/>
相应的数字:
<figure xml:id="ecog340-fig-0001">
<mediaResourceGroup>
<mediaResource alt="image" href="urn:x-wiley:16000587:media:ecog340:ecog340-fig-0001"/>
<mediaResource alt="image" mimeType="image/png" href="image_n/ecog340-fig-0001.png" rendition="webOriginal" />
<mediaResource alt="image" mimeType="image/gif" href="image_t/ecog340-fig-0001-t.gif" rendition="webLoRes" />
<mediaResource alt="image" mimeType="image/png" href="image_m/ecog340-fig-0001-m.png" rendition="webHiRes" />
</mediaResourceGroup>
<caption>
<p>........</p>
</caption>
</figure>
表格引用XML链接:
Table <link href="#ecog340-tbl-1"/>
对应表:
<tabular xml:id="ecog340-tbl-1">
<title type="main">......</title>
在XSLT中使用:
<xsl:template match="link">
<a href="{@href}"><xsl:value-of select="@href"/>
<xsl:value-of select="."/>
</a>
</xsl:template>
在Browserview中:
Boulos#bib-0014
图#ecog340-fig-0001
表#ecog340-tbl-1
但我希望它应该查看所有带年份的参考链接
Boulos 1974a
使用数字(基于id - 省略零)
图1
带号码(基于id)
表1
你能取悦吗?答案 0 :(得分:0)
我定义了一个键
<xsl:key name="bibById" match="bib" use="@xml:id"/>
然后在link
模板中,您可以获得
<xsl:value-of select="key('bibById', substring-after(@href, '#'))/citation/pubYear" />
将问题扩展到表格和数字,我采用了更灵活的方法 - 允许密钥接收figure
和tabular
元素以及{{1} }:
bib
以特殊模式定义模板以处理各种情况
<xsl:key name="xrefById" match="bib|tabular|figure" use="@xml:id"/>
现在在<xsl:template match="bib" mode="xref">
<xsl:value-of select="citation/pubYear" />
</xsl:template>
<xsl:template match="*" mode="xref">
<!-- take everything after the second dash in the id and treat as number -->
<xsl:value-of select="
number(substring-after(substring-after(@xml:id, '-'), '-'))" />
</xsl:template>
模板中,您可以使用
link
它将为每种交叉引用做正确的事。