У меня есть следующий XML.Подсчитать предшествующие элементы игнорировать узел
<nd>
<fn>
<fnn>*</fnn>
<fnt>
<p>
<i>ftn 1</i>
</p>
</fnt>
</fn>
<ti>
<fn>
<fnn>*</fnn>
<fnt>
<p>
<i>ftn 1</i>
</p>
</fnt>
</fn>
</ti>
<tx>
<fn>
<fnn>1</fnn>
<fnt>
<p>
<i>ftn2</i>
</p>
</fnt>
</fn>
<fn>
<fnn>2</fnn>
<fnt>
<p>
<i>ftn3</i>
</p>
</fnt>
</fn>
</tx>
</nd>
Здесь я хочу, чтобы подсчитать предыдущую fnn
и создание сносок, но здесь я хочу preceding::tx
Игнорировать регистр. Я использую ниже XSLT.
<xsl:template match="/">
<hmtl>
<head>
<title>New Version!</title>
</head>
<xsl:apply-templates/>
<xsl:if test="//fnn">
<section class="tr_footnotes">
<xsl:text disable-output-escaping="yes"><![CDATA[<hr />]]></xsl:text>
<xsl:apply-templates select="//page|//fnt" mode="footnote"/>
</section>
</xsl:if>
</hmtl>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="fnn">
<xsl:variable name="count" select="count(preceding::fnn)"/>
<xsl:variable name="varHeaderNote" select='concat("f",$count)'/>
<xsl:variable name="varFootNote" select='concat("#ftn.",$count)'/>
<sup>
<a name="{$varHeaderNote}" href="{$varFootNote}" class="tr_ftn">
<xsl:value-of select="."/>
</a>
</sup>
</xsl:template>
<xsl:template match="ti"/>
<xsl:template match="fnt" mode="footnote">
<xsl:variable name="count" select="count(preceding::fnn)"/>
<div class="tr_footnote">
<div class="footnote">
<sup>
<a>
<xsl:attribute name="name"><xsl:text>ftn.</xsl:text><xsl:value-of select="$count"/></xsl:attribute>
<xsl:attribute name="href"><xsl:text>#f</xsl:text><xsl:value-of select="$count"/></xsl:attribute>
<xsl:attribute name="class"><xsl:text>tr_ftn</xsl:text></xsl:attribute>
<xsl:value-of select="$count"/>
</a>
</sup>
<xsl:apply-templates/>
</div>
</div>
</xsl:template>
Здесь я в состоянии игнорировать ti
с помощью <xsl:template match="ti"/>
, но в Тхет рассчитывать рассматривает fnn
внутри ti
, здесь я хочу, чтобы его игнорировать и считать. И в разделе сносок я не могу игнорировать его.
Здесь в разделе головы.
После ftn.0
он порождает ftn.2
, но я хочу, чтобы это было ftn 1
И в разделе сносок есть ftn.1
и ftn.2
(Это сноска из ti
), и это должно быть проигнорировано.
, пожалуйста, дайте мне знать, как я могу это исправить.
Вот working Demo
Спасибо.
Это не работает в сносках разделе – user3872094
Я не уверен, чтобы понять укомплектовать в OBJECTIF, но попробовать этот метод: http://xsltransform.net/6qVRKww/8. У него, конечно, есть более простой способ, но он не требует изменения всего кода. Необходимо изменить счетчик и получить шаблон для сноски режима, с предикатом к fnt. –