XSL - 需要帮助组合两个变量

时间:2014-02-27 18:01:24

标签: variables xslt concat

我需要结合两个变量,一个是像'11223344'这样的数字,另一个是像'AB'这样的两个字母。

结果我期待:'AB11223344'

这是我到目前为止的代码:

 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml"/>
    <xsl:template match="/dataset">
        dataset>
            <xsl:variable name="modPatientID" select="attr[@tag='00100020']"/>
            <xsl:variable name="AccNum" select="attr[@tag='00080050']"/>
            <xsl:variable name="Prefix" select="AB"/>
            <!-- (0008,0050) Accession_Number -->
            <xsl:if test="string-length($modPatientID)=8">
                <xsl:if test="contains($AccNum,'_')">
                    <attr tag="00100020" vr="LO">
                        <xsl:value-of select="concat($Prefix, $modPatientID)"/>
                    </attr>
                </xsl:if>
            </xsl:if>
        </dataset>
    </xsl:template>
</xsl:stylesheet>

这看起来对我来说是正确的,但它似乎没有做我期待的事情。输出只是'11223344',我正在寻找'AB11223344'

有没有人有任何想法?

谢谢

1 个答案:

答案 0 :(得分:0)

select属性是一个XPath表达式,所以

<xsl:variable name="Prefix" select="AB"/>

将变量$Prefix设置为包含当前上下文节点下名为AB的所有子元素的节点集。如果没有这样的元素,那么结果集将为空,这就是为什么你没有前缀。

如果您希望变量包含字符串 AB,那么您需要引用它:

<xsl:variable name="Prefix" select="'AB'"/>

此处select表达式是字符串文字而不是位置路径。