2017-11-30 15 views
0

私は以下の要件を持っています。 サンプルXML:XSLTテンプレートのループ番号のアクセス

<root> 
    <bookseries> 
     <author/> 
     <version/> 
     <book> 
      <date>1</date> 
      <price>10</price> 
     </book> 
     <book> 
      <date>2</date> 
      <price>20</price> 
     </book> 
     <book> 
      <date>3</date> 
      <price>30</price> 
     </book> 
    </bookseries> 
</root> 

は今、私はすべてのブック要素にテンプレートを適用します。 は、私は現在、私のテンプレートでやっていることである。現在、このアプローチを使用して

<xsl:template match="//book"> 
    <!--here I want to see which book element is being copied and also format its data. 
    I am not getting the current order number of template--> 
</xsl:template> 

、私は3回repitativelyのみ最初のbook要素のデータを取得します。私はそれぞれのテンプレート呼び出しで各書籍要素のデータにアクセスする必要があります。これどうやってするの?

+4

投稿したテンプレートはどこに適用されますか?テンプレート本体はどのように正確に見えますか?本文の中で 'book'要素は文脈ノードなので、' price'のような相対的表現を使って、一致した本の価格にアクセスします。 'price'はすべての' price'要素を選択し、 'value-of ' 'XSLT 1は文書内の最初の' price'要素のみを出力します。 –

答えて

-1

あなたはこれを試すことができます。

<xsl:template match="//book"> 
    <xsl:copy> 
     <!-- capturing child with different element name to show only result--> 
     <d><xsl:value-of select="date"/></d> 
     <p><xsl:value-of select="price"/></p> 
    </xsl:copy> 
</xsl:template> 

は、あなたがそのような場合には、それは、現在の要素よりも、ファイル全体の評価者で実行し、あなたがそこに名前はないウィット「//」との子供をキャプチャするテンプレートの内部よりもテンプレートと一致する場合@martin上記のコメントに既に言及しました。

関連する問題