3

ここに私のXMLがあります:

...
<table></table>
<p class="source"></p>
<p class="notes"></p>
<p class="notes"></p>
<p class="notes"></p>
<p />
<p />
...
<table></table>
<p class="notes"></p>
<p class="notes"></p>
<p />
...

"<p>"タグごとに呼び出されるテンプレートを作成しようとしています。このテンプレートは、このタグが最初に先行するタグに関連する場所のインデックスを返します"<table>""<p>"「クラス」属性が「メモ」に等しいタグのみをカウントする必要があります。

したがって、上記の例では、以下のコメントに記載されているインデックスが必要です。

...
<table></table>
<p class="source"></p>
// should return 0 <p class="notes"></p>
// should return 1 <p class="notes"></p>
// should return 2 <p class="notes"></p>
<p />
<p />
...
<table></table>
// should return 0 <p class="notes"></p>
// should return 1 <p class="notes"></p>
<p />
...

これが私がこれまでに思いついたものです:

 <xsl:template name="PrintTableNumberedNote">
 <xsl:variable name="currentPosition" select="count(preceding-sibling::p[(@class='notes')])"/>
 <xsl:value-of select="$currentPosition"/>.     
 </xsl:template>

前のテーブルが最初に出現した時点でカウントを停止するロジックを追加する必要があります。これは、このテンプレートでは結果が正しく表示されないためです。

...
<table></table>
<p class="source"></p>
// returns 0 <p class="notes"></p>
// returns 1 <p class="notes"></p>
// returns 2 <p class="notes"></p>
<p />
<p />
...
<table></table>
// returns 3 <p class="notes"></p>
// returns 4 <p class="notes"></p>
<p />
...

この他の基準を XPath ステートメントに組み合わせるにはどうすればよいですか?

ありがとうございました、

4

1 に答える 1