在xsl

时间:2018-07-04 15:28:01

标签: xslt

我正在尝试将字符串合并到when条件中,但是它不起作用。

我已经尝试过了:

<xsl:text>Salary:</xsl:text>
    <xsl:for-each select="z:SalaryRecord">
    <xsl:choose>
        <xsl:when test="z:SalaryRecord = 'agreement'">
            <xsl:value-of select="concat('&#09;',position(),'&#09;',z:Type,'&#10;')"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="concat('&#09;',position(),'&#09;','&#09;',z:Type,'(','from ',z:AmountFrom, ' to ',z:AmountTo,')','&#10;')"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:for-each>

这:

<xsl:when test="z:SalaryRecord::text() = 'agreement'">

还有这个

<xsl:when test="z:SalaryRecord == 'agreement'">

我的XML源代码:

<RequiredSalary>
   <SalaryRecord>
    <Type>monthly</Type>
    <AmountFrom>1000</AmountFrom>
    <AmountTo>2000</AmountTo>
  </SalaryRecord>
  <SalaryRecord>
   <Type>agreement</Type>
  </SalaryRecord>
</RequiredSalary>

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

一种解决您的情况的方法可能是以下模板。但是,您必须在样式表中为z前缀定义一个名称空间。尝试将xmlns:z="http://whatever.is.your.namespace"添加到XSLT样式表元素。

<xsl:template match="z:RequiredSalary">
    <xsl:for-each select="z:SalaryRecord">
        <xsl:text>Salary:</xsl:text>
        <xsl:choose>
            <xsl:when test="z:Type = 'agreement'">
                <xsl:value-of select="concat('&#09;',position(),'&#09;',z:Type,'&#10;')"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="concat('&#09;',position(),'&#09;','&#09;',z:Type,'(','from ',z:AmountFrom, ' to ',z:AmountTo,')','&#10;')"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
    <xsl:value-of select="'&#10;'" />
</xsl:template>