私はXMLで本のリストを作った。以下は私のXMLファイルのフォーマットです。もちろん、より多くのブロックがあります。<book>
XSLでは、for-eachブロックの最初の行だけをどのように印刷できますか?
<data>
<book>
<title>Encyclopaedia Britannica</title>
<category>encyclopedia</category>
<language>English</language>
<author>Encyclopaedia Britannica Editorial</author>
<year>1768</year>
<price>49.99</price>
</book>
</data>
そして、私は最も高価なもののタイトルを印刷したいと思います。
<p style = "display: block;">
The most expensive book is "
<xsl:for-each select="data/book">
<xsl:sort select="price" order="descending"/>
<!-- <xsl:value-of select="title"/> -->
</xsl:for-each>
<xsl:value-of select="data/book/title"/>
"
</p>
(私はコメントとして設定)<xsl:for-each>
で<xsl:value-of>
ブロックが実行されると、それは降順にソートすべての書籍を印刷します:.xsl
ファイルに次のように私が試してみました。もちろん、<xsl:value-of select="data/book/title"/>
は元のテーブルの最初の本を印刷します。
他の書籍の印刷を中止して最も高価なものを印刷したいが、テーブルがソートされているときは最初のものを印刷したい。
break
のようなものがないことを知っています。だから、<xsl:if>
ブロックを使って、行が最初かどうかをチェックすることを考えました。この考えは可能ですか?あるいは私は別の方法でこれを行うことができますか?
私は必要なものを手に入れました。私はXSLプログラミングのノブであり、 'prosition()'は私にとって新しいものです。ありがとう! –