【发布时间】:2015-03-23 21:31:25
【问题描述】:
我正在使用 XSLT 将 XML 文档(用户手册的一部分)显示为 HTML。对于数字,我有以下 XSLT 模板:
<xsl:template match = "figure">
<a>
<xsl:attribute name = "name">
<xsl:value-of select = "./@id"/>
</xsl:attribute>
<p class = "caption">Figure <xsl:number count="figure"/>: <xsl:value-of select="./title"/></p>
<p class = "graphic">
<img style="width:700px;">
<xsl:attribute name = "src">
<xsl:value-of select = "./graphic/@boardno"/>
</xsl:attribute>
</img>
</p>
</a>
</xsl:template>
这将显示图形并根据其在文档中的位置为其指定一个编号。现在,我的图形参考模板()是这样的:
<xsl:template match = "figref">
<a>
<xsl:attribute name = "href">
#<xsl:value-of select = "./@IDREF" />
</xsl:attribute>
<span class = "figure>
<xsl:value-of select = "."/>
</span>
</a>
</xsl:template>
这是 XML 本身:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="lorip.xsl"?>
<descopim docid="LoremIpsumSample" >
<descwp id ="descwp_LorIp">
<titleblk>
<wptitle>
<maintlvl>Dolor Sit Amet</maintlvl>
<subject>Natoque Page - Description and Controls</subject>
<sysnomen>
<name>Lorem Ipsum</name>
</sysnomen>
</wptitle>
</titleblk>
<intro>
<title>Nunc Eget ut Vivamus</title>
<para id="NuncEgVivpara001">
Lorem ipsum dolor sit amet, dui eu, est natoque suscipit suspendisse fringilla et. Adipisicing nonummy, urna in justo.
Maecenas sollicitudin nam ut a asperiores mollis. Nunc eget ut ut vivamus, sit mollis integer purus amet. Consequat
molestie pellentesque, ultricies tincidunt elit arcu nullam diam, in tempor morbi integer.
</para>
</intro>
<sysdesc>
<title>Nunc Eget Luctus Nullam</title>
<desc>
<para>
Neque eu maecenas pellentesque metus, gravida convallis est orci
<figref IDREF = "ConvEstOrcifig001" label = "Convallis est Orci">Figure </figref> sollicitudin nam ut a asperiores mollis,
<figref IDREF = "AsperMollfig002" label = "Asperiores Mollis"> Figure </figref>.
Amet nostra mus aptent ut commodo. Platea vestibulum vitae non felis, sed ac. Morbi quam tortor vestibulum lorem fringilla
nec. Enim sed taciti dictum vehicula sit, risus at vehicula risus wisi quis, fermentum dolor ante illo quis odio at,
dignissim nullam arcu nisl arcu nec ullamcorper, libero vehicula sed. <extref href = "appendixb.pdf">Appendix B (Adipisicing
Nonummy)</extref> et <extref href = "appendixc.pdf">Appendix C (Maecenas sollicitudin) </extref>.
</para>
</desc>
</sysdesc>
<figsect>
<figure id = "SuspFringfig001">
<title>Suspendisse Fringilla</title>
<graphic boardno = "SuspFringfig001.png"></graphic>
</figure>
<figure id = "AsperMollfig002">
<title>Asperiores Mollis </title>
<graphic boardno = "AsperMollfig002.png"></graphic>
</figure>
<figure id = "VivPulLitfig007">
<title>Viverra Pulvinar Litora</title>
<graphic boardno = "VivPulLitfig007.png"></graphic>
</figure>
</figsect>
</descwp>
</descopim>
我需要一种方法从图形本身中提取数字(xsl:number count="figure"),或者确定该图形在总体顺序中的数字,以通过交叉引用显示该数字(例如, “图 3”,而不仅仅是“图”。)
所以,以第一个 figref 为例,我正在寻找的结果是:
<a href ="#SuspFringfig001">
<span class = "figure">
Figure 1
</span>
</a>
【问题讨论】:
-
您确实需要发布一个小(但完整)的输入示例和预期输出。一般情况下,
xsl:number会“随用随用”为节点编号,并且无法在同一转换中的其他地方引用它 - 因此您将不得不使用其他方法。 -
@michael.hor257k 谢谢。已添加示例。