2013-02-19 17 views
0

創建組合框我從XML的價值,我必須使用XSLT 1.0在XSLT

這是XML我從數據庫中獲取創建一個組合框:

<CER_Pot> 
    <Record CIMtrek_CERPot="Bus Dev|Ser Del|Sol Del|?" /> 
</CER_Pot> 

,這是我怎麼在XSLT創建組合框:

<select size="1" style="width:60%;" name="CIMtrek_CI_CER_Pot" 
               id="CIMtrek_CI_CER_Pot"> 
               <option value="0">Select Fund Pot</option> 
               <xsl:for-each select="//CER_Pot/Record"> 
                 <option> 
                  <xsl:if 
                   test="//Record/CIMtrek_CERPot/text()[email protected]_CI_CER_Pot"> 
                   <xsl:attribute name="selected">true</xsl:attribute> 
                  </xsl:if> 
                  <xsl:attribute name="value"><xsl:value-of 
                   select="@CIMtrek_CERPot" /></xsl:attribute> 
                 <xsl:value-of select="@CIMtrek_CERPot" /> 
                 </option> 
                </xsl:for-each> 
              </select> 

這給了我組合框,沒有任何問題,但我想有一個組合框,這將有值splited基於此|分隔符等等在這種情況下,將四排

Bus Dev 
Ser Del 
Sol Del 
? 

如何在XSLT做到這一點

請幫我讓他做。

問候

+0

的組合框是一個下拉菜單(組合(因此而得名)UI控件這就是你有選擇的獲得HTML)和一個文本輸入(文本類型的輸入)。 HTML沒有任何以組合框表示的本機控件。你有一個選擇。稱它爲選擇。 – Quentin 2013-02-19 14:58:46

+0

讚賞Quentin – 2013-02-19 15:01:19

回答

1

試試這個XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html"/> 

    <xsl:template match="/"> 
     <select size="1" style="width:60%;" name="CIMtrek_CI_CER_Pot" id="CIMtrek_CI_CER_Pot"> 
      <option value="0">Select Fund Pot</option> 
      <xsl:for-each select="//CER_Pot/Record"> 
       <xsl:variable name="selectValues"> 
        <xsl:call-template name="tokenize"> 
         <xsl:with-param name="pText" select="@CIMtrek_CERPot"/> 
         <xsl:with-param name="pDelim" select="'|'" /> 
        </xsl:call-template> 
       </xsl:variable> 

       <xsl:for-each select="$selectValues/item"> 
        <xsl:variable name="curItem" select="." /> 
        <option> 
         <xsl:if test="//Record/CIMtrek_CERPot/text()=$curItem"> 
          <xsl:attribute name="selected">true</xsl:attribute> 
         </xsl:if> 
         <xsl:attribute name="value"><xsl:value-of select="$curItem"/></xsl:attribute> 

         <xsl:value-of select="$curItem"/> 
        </option> 
       </xsl:for-each> 
      </xsl:for-each> 
     </select> 
    </xsl:template> 

    <xsl:template name="tokenize"> 
     <xsl:param name="pText"/> 
     <xsl:param name="pDelim"/> 

     <xsl:if test="string-length($pText)"> 
      <item> 
       <xsl:value-of select="substring-before($pText, $pDelim)"/> 
      </item> 

      <xsl:call-template name="tokenize"> 
       <xsl:with-param name="pText" select="substring-after($pText, $pDelim)"/> 
       <xsl:with-param name="pDelim" select="$pDelim" /> 
      </xsl:call-template> 
     </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 
+0

感謝馬克您的帖子,但我得到這個異常'錯誤:'錯誤檢查表達式的類型'FilterParentPath(變量參考(selectValues /結果樹),步驟(「孩子」,26))'。 '' – 2013-02-20 09:42:42

+0

@Anto:我沒有在交付的XSLT或您交付的XSLT中找到這個表達式。我很抱歉,但無法幫助。 – 2013-02-20 10:43:03

+0

感謝您的評論,當我添加你的代碼我得到這個異常,我應該給我的xsl文件? – 2013-02-20 10:44:40