忽略xslt模板内容中的空格

时间:2013-01-07 13:32:10

标签: xml xslt msxsl

在使用XSLT时,有很多问题涉及忽略源XML数据中的空格,但我真正想要的是在XSLT模板中包含空格(为了便于阅读),但没有输出。使用空格编写模板,然后将其转换为没有空格的新模板使问题复杂化,我想要替代它。作为澄清,我有XML片段

<CAInfo prefix="073" serial="12345675" orig="AMS" dest="BRU" issuedate="2012-12-20" currency="EUR">
    <RevisedWeight code="K" amt="140.5"/>
    <OriginalWeight code="K" amt="2"/>
</CAInfo>

我要输出

PRE / 114-12345675AMSBRU / K140.5 / K2 / 2012年12月20日/欧元

我现在正在使用

<xsl:template match="CAInfo">
PRE/<xsl:value-of select="@prefix"/>-<xsl:value-of select="@serial"/><xsl:value-of select="@orig"/><xsl:value-of select="@dest"/>/<xsl:value-of select="RevisedWeight/@code"/><xsl:value-of select="RevisedWeight/@amt"/>/<xsl:value-of select="OriginalWeight/@code"/><xsl:value-of select="OriginalWeight/@amt"/>/<xsl:value-of select="@issuedate"/>/<xsl:value-of select="@currency"/>
</xsl:template>

我更喜欢使用的是

<xsl:template match="CAInfo">
PRE/<xsl:value-of select="@prefix"/>-<xsl:value-of select="@serial"/>
<xsl:value-of select="@orig"/><xsl:value-of select="@dest"/>
/<xsl:value-of select="RevisedWeight/@code"/><xsl:value-of select="RevisedWeight/@amt"/>
/<xsl:value-of select="OriginalWeight/@code"/><xsl:value-of select="OriginalWeight/@amt"/>
/<xsl:value-of select="@issuedate"/>
/<xsl:value-of select="@currency"/>
</xsl:template>

但这会在输出上给我额外的换行符。我该如何避免这些?

1 个答案:

答案 0 :(得分:2)

怎么样:

<xsl:template match="CAInfo">
  <xsl:value-of select="concat('PRE/', @prefix, '-', @serial, '/', @orig, @dest, '/',
      RevisedWeight/@code, RevisedWeight/@amt, '/', OriginalWeight/@code, 
      OriginalWeight/@amt, '/', @issuedate, '/', @currency)"/>
</xsl:template>