我需要结合两个变量,一个是像'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'
有没有人有任何想法?
谢谢
答案 0 :(得分:0)
select
属性是一个XPath表达式,所以
<xsl:variable name="Prefix" select="AB"/>
将变量$Prefix
设置为包含当前上下文节点下名为AB
的所有子元素的节点集。如果没有这样的元素,那么结果集将为空,这就是为什么你没有前缀。
如果您希望变量包含字符串 AB
,那么您需要引用它:
<xsl:variable name="Prefix" select="'AB'"/>
此处select
表达式是字符串文字而不是位置路径。