- - PR -
xsl:if test=の書き方について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-08-03 12:04
はじめまして。研修でjavaやスタイルシートを学んでいる者です。
今回、スタイルシートで画面を表示して、XMLでDBに入れたデータをもとにラジオボタンの選択を変えるということをしているのですが、 test="??"の書き方がわからず困っております。 初歩の質問だとは思いますが、ご教授お願いいたします。 XML文書 <?xml version="1.0" encoding="Shift_JIS"?> <USER> <USERCOLOR>blue </USERCOLOR> </USER> スタイルシート <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:xql="http://metalab.unc.edu/xql/"> <xsl:output method="html" version="4.0" encoding="Shift_JIS"/> <xsl:template match="ino:response"> 略 <tr><td> <xsl:choose> <xsl:when test="USERCOLOR='blue'"> <input type="radio" name="color" value ="blue" style="background-color: #99CCFF" checked="checked"/> <input type="radio" name="color" value ="red" style="background-color: #FFC0CB" /> </xsl:when> <xsl:otherwise> <input type="radio" name="color" value ="blue" style="background-color: #99CCFF" /> <input type="radio" name="color" value ="red" style="background-color: #FFC0CB" checked="checked"/> </xsl:otherwise> </xsl:choose> </td></tr> 略 </xsl:template> </xsl:stylesheet> ---ここまで この状態だと、赤の方にチェックされたラジオボタンが表示されます。 <xsl:for-each select="USER"> <xsl:value-of select="USERCOLOR"/> </xsl:for-each> と入れるとblueと表示されるので、<xsl:when test="USERCOLOR='blue'">の書き方がおかしいのだと思います。 |
|
投稿日時: 2005-08-03 12:42
parent軸を使って 親ノードを確認。
用語 コンテキストノード、カレントノード 式中のUSERCOLORは、コンテキスト/USERCOLOR が絶対XPATHとみなされます。 |
|
投稿日時: 2005-08-03 12:43
情報は正確に書きましょうね。
もし、ino:response というのが USER のことなら、 test="normalize-space(string(USERCOLOR)) = 'blue'" ではどうでしょうか。 |
|
投稿日時: 2005-08-03 14:56
ありがとうございます。
スフレさんの書き方を参考に test="normalize-space(string(..//USERCOLOR)) = 'blue'" とやったら、望み通りの表示がされました。 この書き方を見ればわかるでしょうが、私がノードの関係がよくわかってなかったため表示されなかったようです。 MMXさんの提示してくれたキーワードを参考に勉強します。 お二方とも本当にありがとうございました。 |
1