本地命名空间不会为XSLT映射选择多个值

时间:2018-05-28 00:24:51

标签: xslt xslt-2.0

以下是我的xsl文件,基于条件MaterialSalesText仅选取第一个值。

<xsl:element name="DMI">
            <xsl:element name="D_808">F</xsl:element>
            <xsl:element name="S_723">
                <xsl:element name="D_801_7">
                <xsl:choose>
                <xsl:when test="../*[local-name()='SalesOrganisationID']='FAB' and ../*[local-name()='DistributionChannelCode']='SF'">                  
                            <xsl:value-of select="..//*[local-name()='MaterialSalesText']"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="Product/Note"/>
                        </xsl:otherwise>
                </xsl:choose>

SalesOrganisationID&amp; DistributionChannelCode&amp; MaterialSalesText位于本地命名空间下 SalesOrganisationID&amp; DistributionChannelCode处于标题级别 MaterialSalesText位于Item / Product

Note位于自己的名称空间下,位于Item / Product级别。

Notematerial根据条件重复多次,基于条件仍然只写第一个值。

1 个答案:

答案 0 :(得分:0)

您确定使用的是XSLT 2或3处理器并且已将样式表上的version属性设置为<xsl:stylesheet version="2.0" ...>吗?如果您在向后兼容模式下使用XSLT 1处理器或XSLT 2或3处理器(在代码中使用version="1.0"),则任何xsl:value-of select="foo"仅输出第一个选定的字符串值foo元素。

只有使用XSLT 2或3处理器以及代码中的version个数字,xsl:value-of select="foo"才能输出所有foo值的(空格分隔)列表。< / p>