1

我从 sql 返回了这个 xml:

<Keywords>
  <Record CIMtrek_Keywords="Bus Dev|Ser Del|Sol Del|?" />
</Keywords>

我想将这些值一一放入组合框中,示例代码在下面,它Increase and Decrease的值与我希望Bus Dev and Ser Del and Sol Del and ?一一获得的方式相同

<select size="1" style="width:60%;" name="CIMtrek_CI_CER_Type"
                                                id="CIMtrek_CI_CER_Type">
                                                <option value="0">Select Fund Type</option>
                                                <option value="Increase">
                                                    <xsl:if test="//Record/CIMtrek_CI_CER_Type/text()='Increase'">
                                                        <xsl:attribute name="selected">true</xsl:attribute>
                                                    </xsl:if>
                                                    Increase
                                                </option>
                                                <option value="Decrease">
                                                    <xsl:if
                                                        test="//Record/CIMtrek_CI_CER_Type/text()='Decrease'">
                                                        <xsl:attribute name="selected">true</xsl:attribute>
                                                    </xsl:if>
                                                    Decrease
                                                </option>
                                            </select>

这就是我从 SQL 查询生成的 xml 中的值创建组合框的方式:

<xsl:for-each select="//CIMtrek_CarrierName/Record">
                                                    <option>
                                                        <xsl:if
                                                            test="//Record/CIMtrek_RegWhseCo_Carrier/text()=@CIMtrek_CarrierName">
                                                            <xsl:attribute name="selected">true</xsl:attribute>
                                                        </xsl:if>
                                                        <xsl:attribute name="value"><xsl:value-of
                                                            select="@CIMtrek_CarrierName" />!@#$%^*!<xsl:value-of
                                                            select="@Carrier_LateContacts" />!@#$%^*!<xsl:value-of
                                                            select="@Carrier_Contacts1" />!@#$%^*!<xsl:value-of
                                                            select="@Carrier_Contacts2" />!@#$%^*!<xsl:value-of
                                                            select="@Carrier_Contacts3" /></xsl:attribute>
                                                        <xsl:value-of select="@CIMtrek_CarrierName" />
                                                    </option>
                                                </xsl:for-each>

有了 BeniBela 的回答,我无法像上面的代码一样把东西放进去,

希望贝尼贝拉能帮我弄清楚。

这该怎么做,

请帮我,

最好的祝福。

4

1 回答 1

2

tokenize()功能正是这样做的。请注意,它采用正则表达式,因此|必须转义为[|]

for $o in /Keywords/Record/tokenize(@CIMtrek_Keywords, "[|]") return
  <option value="{$o}">{$o}</option>

新的 xml 可以像这样转换为 xquery:

for $r in //CIMtrek_CarrierName/Record return  $r/
  <option value="{@CIMtrek_CarrierName}!@#$%^*!{@Carrier_LateContacts}!@#$%^*!{@Carrier_Contacts1}!@#$%^*!{@Carrier_Contacts2}!@#$%^*!{@Carrier_Contacts3}">
  {  if (//Record/CIMtrek_RegWhseCo_Carrier/text()=@CIMtrek_CarrierName) then attribute selected { "true" } else (),
     data(@CIMtrek_CarrierName)  }
  </option>

开头的 $r/ 改变了上下文,所以我们不需要在每次访问属性之前都写 $r/,xsl:value-of 变成 {..} 并且 xsl:attribute 变成了一个类似 xml 的属性声明或 'attribute name {..}'

于 2013-02-19T10:55:53.033 回答