本のデータを持つxmlファイルを、xsltによってhtmlに変換し、RubyのCGIを使ってページ遷移をしています。
xmlファイルに、要素itemの子要素としてtitle,creator,price,...等があるとします。
また、xsltにおいて<xsl:param name="category" /><xsl:param name="word" />という風に二つの変数を用意します。遷移前のページから受け取った検索ワードです(正しく受けとれているのは確認できています)。
ここで、要素名が$categoryでその要素の文字列に$wordを含むitemをselectしようとしています。
xsl:chooseを使った次のコードは、意図した動作をします。
<xsl:choose> <xsl:when test = "$category='title'"> <xsl:apply-templates select="/books/item[contains(title,$word)]" /> </xsl:when> <xsl:when test = "$category='creator'"> <xsl:apply-templates select="/books/item[contains(creator,$word)]" /> </xsl:when> </xsl:choose>
これと同じ動作をするコードをより短く記述できないかと試みているのですが、次のコードではうまくいきません。
<xsl:apply-templates select="/books/item[contains((local-name()=$category),$word)]" />
改良の余地がありましたら是非教えていただきたいです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/05 15:02