1

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 / EUR

私は今使っています

<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>

しかし、それは私に出力に余分な改行を与えるでしょう。どうすればそれらを回避できますか?

4

1 に答える 1

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>
于 2013-01-07T13:43:06.803 に答える