2013-05-14 88 views
0

我不是這方面的專家。我做了一些搜索,但沒有找到我正在尋找的東西。希望這很簡單。XSL後退按鈕

我的工作,有一個內置的Web服務器軟件控制系統。在這個系統的導航過程中有一些要點,唯一的出路是使用網頁瀏覽器後退按鈕(不幸的是,我知道)。

對於使用該運營商來說,他們通常在屏幕上所有的導航,並突然與有「沒有出路」可能會引起混淆顯示器呈現。

我想修改layout.xsl文件,添加一個後退按鈕。 (如果它的事項,它只是曾經打算爲Internet Explorer,因爲系統是基於ActiveX)

下面是該文件的相關部分:

<table id="Menu" class="Header" border="0" cellspacing="0" cellpadding="0" width="100%"> 
    <tr> 
    <td width="100%"> 
     <table class="menuBar" border="0" cellspacing="0" cellpadding="0"> 
     <tr height="0"> 

      <xsl:for-each select="Links/Link"> 
      <xsl:if test="text() != 'Lists'"> 
       <xsl:if test="text() != 'Database'"> 
       <xsl:if test="text() != 'Favorites'"> 
        <xsl:if test="text() != 'Log Off'"> 
        <xsl:if test="text() != 'Help'"> 
         <xsl:call-template name="Button"> 
         <xsl:with-param name="href" select="@href"/> 
         <xsl:with-param name="text" select="text()"/> 
         <xsl:with-param name="last" select="boolean(position() = count(../Link))"/> 
         </xsl:call-template> 
        </xsl:if> 
        </xsl:if> 
       </xsl:if> 
       </xsl:if> 
      </xsl:if> 
      </xsl:for-each> 

      <th class="rightbar" align="right" valign="top"/> 
     </tr> 
     </table> 
    </td> 
    </tr> 
</table> 

<xsl:template name="Button"> 
    <xsl:param name="href"/> 
    <xsl:param name="text"/> 
    <xsl:param name="last"/> 

    <th width="auto" height="20" class="deselected" valign="center"> 
    <xsl:element name="a"> 
     <xsl:attribute name="href"> 
     <xsl:value-of select="$href"/> 
     </xsl:attribute> 
     <xsl:value-of select="$text"/> 
    </xsl:element> 
    </th> 
    <th width="5" class="deselected" valign="middle"> 
    <img src="/file/images/submenumid.png" width="5" height="20"/> 
    </th> 
</xsl:template> 

你會看到表多次調用按鈕模板。如果你感到困惑,這些線,

<xsl:if test="text() != 'xxxx'"> 

那些被我加入到過濾掉現有的按鈕,我不想顯示。

什麼我希望的是有一個名爲back button類似的模板,將發送一個回命令到Internet Explorer。我會先致電back button模板,以便它是最左邊的項目。提前

謝謝你,讓我知道是否需要任何額外的信息!

+0

我應該注意,params都來自代碼示例以外。但這對於這個問題確實不重要。 – Nate

+0

即使在XSLT 1.0中也有'和'。沒有必要嵌套'xsl:if'元素! – Borodin

回答

0
<table id="Menu" class="Header" border="0" cellspacing="0" cellpadding="0" width="100%"> 
     <tr> 
      <td width="100%"> 
       <table class="menuBar" border="0" cellspacing="0" cellpadding="0"> 
        <tr height="0"> 
         <xsl:call-template name="Button"> 
          <xsl:with-param name="href">javascript:history.back()</xsl:with-param> 
          <xsl:with-param name="text">Go Back</xsl:with-param> 
          <xsl:with-param name="last" select="false()"/> 
         </xsl:call-template> 

         <xsl:for-each select="Links/Link"> 
          <xsl:if test="text() != 'Lists' 
          and text() != 'Database' 
          and text() != 'Favorites' 
          and text() != 'Log Off' 
          and text() != 'Help'"> 
           <xsl:call-template name="Button"> 
            <xsl:with-param name="href" select="@href"/> 
            <xsl:with-param name="text" select="text()"/> 
            <xsl:with-param name="last" select="boolean(position() = count(../Link))"/> 
           </xsl:call-template> 
          </xsl:if> 
         </xsl:for-each> 

         <th class="rightbar" align="right" valign="top"/> 
        </tr> 
       </table> 
      </td> 
     </tr> 
    </table> 

這是最後確定的代碼。由於鮑羅丁的建議,我清理了很多'如果'的陳述。 我還使用history.back()鏈接向Button模板添加了一個新的調用,而不是添加新的模板。

感謝您的幫助球員

1
<xsl:template name="BackButton"> 
    <xsl:param name="last"/> 

    <xsl:call-template name="Button"> 
    <xsl:with-param name="href" select="javascript:window.history.back()"/> 
    <xsl:with-param name="text" select="Go back"/> 
    <xsl:with-param name="last" select="$last"/> 
    </xsl:call-template> 
<xsl:template/>