В следующем фрагменте xml у меня есть раздел со сноской и подраздел со сноской. Я хочу изменить нумерацию сносок последовательно, начиная с уровня бумаги/раздела, несмотря на то, что ФН не являются братьями и сестрамиполучить позицию узла-потомка от предка, не обязательно родственного брата
<?xml version='1.0' ?>
<paper>
<section>
<title>My Main Section</title>
<para>My para with a <footnote num="1">text</footnote> footnote.</para>
<section>
<title>my subsection</title>
<para>more text with another <footnote num="1">more fn text.</footnote> footnote.</para>
</section>
</section>
</paper>
ожидаемый результат будет:
<?xml version='1.0' ?>
<paper>
<section><title>My Main Section</title>
<para>My para with a <footnote num="1">text</footnote> footnote.</para>
<section><title>my subsection</title>
<para>more text with another <footnote num="2">more fn text.</footnote> footnote.</para>
</section>
</section>
</paper>
Я пытался различные вещи с xsl: число, но не может заставить ничего работать. Ближайший я мог бы получить было следующее:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="footnote/@num">
<xsl:attribute name="num"><xsl:value-of select="count(ancestor::paper/section//footnote)"/></xsl:attribute>
</xsl:template>
</xsl:stylesheet>
, что дает правильный подсчет 2, но я не уверен, как указать, что «Я первый из двух сносок в этом главном разделе».
Я также пытался писать именованный шаблон так:
<xsl:template match="/paper/section">
<section>
<xsl:call-template name="renumberFNs"/>
<xsl:apply-templates/>
</section>
</xsl:template>
<xsl:template name="renumberFNs">
<xsl:for-each select=".//footnote/@num">
<xsl:attribute name="num"><xsl:value-of select="position()"/></xsl:attribute>
</xsl:for-each>
</xsl:template>
но поставить @num на участке. Есть идеи?
«Изменить нумерацию сносок, начинающихся на уровне бумаги/раздела, поэтому fn не являются братьями и сестрами *« Я не уверен, что это значит. Почему бы вам не опубликовать ожидаемый результат трансформации? –
добавил ожидаемый выход, а также редактирование для ясности (я надеюсь :)) – badperson