1
使用XSLT时,有很多问题提及忽略源XML数据中的空白,但我真正想要的是将空白包含在XSLT模板中(为了便于阅读),但没有输出。用空格编写模板,然后将其转换为一个没有空白的新模板使事情复杂化太多了,我想要一个替代方案。作为一个澄清,当我有XML片段忽略xslt模板内容中的空白
<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 /二〇一二年十二月二十零日/欧元
我现在用
<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>
但这会给我额外的输出结果。我如何避免这些?
这是回答和解释在这里:[?我如何声明一个XSL变量时删除空格](http://stackoverflow.com/questions/3637369/how-can- i-remove-whitespace-when-declaring-an-xsl-variable) – Tomalak
哦!冗长! – Martijn
这是XSLT - 不要假装你感到惊讶。 ;) – Tomalak