我从xml获得此值,我必须使用xslt 1.0
创建一个组合框这是我从数据库获得的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()=@CIMtrek_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>
这给了我没有任何问题的组合框但是我想有一个组合框,它将根据这个|
分隔符拆分值,所以在这种情况下它将是四行
Bus Dev
Ser Del
Sol Del
?
如何在xslt
中执行此操作请帮助我完成他的工作。
最好的问候
答案 0 :(得分: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>