私はXSLTを初めて使用し、w3schoolsの「自分で試してみてください」ページを使用していくつかのテストを実行しています。私は次のデモを使用しています:
http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=tryxsl_choose
これには次の行が含まれます。
<xsl:for-each select="catalog/cd">
によってレンダリングされたHTMLのフィルタリングをテストしていますが、オペランドposition()
の使用時に問題が発生しています。<
私は次のことを試しました:
<xsl:for-each select="catalog/cd[position()=1]">
そして、これはXMLデータから最初の項目を返します(予想どおり)。
次に試しました:
<xsl:for-each select="catalog/cd[position()<5]">
これで最初の4つのアイテムが返されることを期待していましたが、代わりに結果が得られませんでした。
私の推測では、おそらくposition()=1
文字列の比較を行っているので、最初の項目が返されますがposition()<5
、この方法では文字列を比較できないため、理解できませんか?
なぜこれが起こっているのですか、そして私が達成したい結果を得るための正しい構文は何でしょうか?
更新: @joocerの応答を読み取り、これを自分でテストした後、>
オペランドを使用すると、逆の結果が得られます。
<xsl:for-each select="catalog/cd[(position()>5)]">