2017-03-26 72 views
0

我正在嘗試製作一個允許用戶輸入搜索xml文件的網頁。有多個輸入,但是當提交搜索時我無法容納空輸入。默認情況下用xsl:when測試時返回所有元素?

var date = rDateSearch.value; 
if (date === "") {   
    var datein = "date=*"; 
} 
else { 
    var datein = "date=" + 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,代替什麼被分配給變量'datein',你現在有'xsl:when test =「date = *」'? –

回答

2

如果用戶沒有指定的值來過濾名稱,日期,或等級,而你試圖找出什麼表情會選擇任何/所有,你既可以使用:

xsl:when test="date" 

只要在xsl:for-each中正在評估record元素中存在date元素,它將「通過」測試。

或者,你可以使用:

xsl:when test="true()" 

這將評估爲真,無論是否有日期元素。

相同的邏輯適用於其他元素。

+0

謝謝你的幫助! – grainman

相關問題