2017-03-26 7 views
0

私は、ユーザーの入力がXMLファイルを検索できるようにするWebページを作成しようとしています。複数の入力がありますが、検索が実行されると空の入力に対応できません。デフォルトですべての要素をxsl:で返す?

var date = rDateSearch.value; 
if (date === "") {   
    var datein = "date=*"; 
} 
else { 
    var datein = "date=" + date"; 
} 

「日付」変数は、xsl:whenテストに送信されます。 xsl:whenはすべての日付値を返すようにします。

これを行う方法はありますか?私の現在のアイデアは機能していません。

これは私のXMLのサンプルです:

<record> 
    <name>John Smith</name> 
    <date>1972</date> 
    <rating>0.5</rating> 
</record> 

、これは私のXSLです。私はこのコードの適合性が不明です。

<xsl:for-each select="records/record"> 
    <xsl:choose> 
     <xsl:when test ="name=*"> 
      <xsl:choose> 
       <xsl:when test ="date=*"> 
        <xsl:choose> 
         <xsl:when test ="rating=*"> 
          <tr> 
           <td><xsl:value-of select="name"/></td> 
           <td><xsl:value-of select="date"/></td> 
           <td><xsl:value-of select="rating"/></td> 
          </tr> 
         </xsl:when> 
        </xsl:choose> 
       </xsl:when> 
      </xsl:choose> 
     </xsl:when> 
    </xsl:choose> 
</xsl:for-each> 
+0

XSLを投稿して、 'xsl:choose'が適用されているときのコンテキストを表示すると役に立ちます。 XMLがどのように見えるかを知るのにも役立ちます。どのようにこれを適用しているかについて何も知らずに、 'date'の値がないときに' true() 'を返す式はどうでしょうか?それで、すべてがあなたの' xsl:when'の@test基準を通りますか? –

+0

ご協力ありがとうございます、私は要求どおりにサンプルを追加しました。 – grainman

+0

XSLTを動的に構築して、現在 'xsl:when test =" date = * "'という変数を 'datein'変数に代入していますか? –

答えて

2

ユーザーは、名前、日付、または格付けをフィルタリングする値を指定していない、とあなたは式は/すべて、あなたは可能性、使用のいずれかのいずれかを選択することになるかを把握しようとしている場合:

xsl:when test="date" 
xsl:for-eachで評価される record要素に date要素がある限り、テストを「合格」します。

また、あなたが使用できます。日付の要素があるかどうかを、真として評価されます

xsl:when test="true()" 

他の要素についても同じロジックが適用されます。

+0

ありがとうございます! – grainman

関連する問題