2

xsltが出力に新しい行を入れない理由がわかりません...これが私のxsltです...。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="text" encoding="iso-8859-1"/>
  <xsl:variable name="newline"></xsl:variable>
  <xsl:template name="FairWarningTransform" match="/">    <!--@* | node()">-->

          <xsl:for-each select="//SelectFairWarningInformationResult">  

                <xsl:value-of select="ApplicationID"/>,<xsl:value-of select="USERID"/>
                &#10;
          </xsl:for-each>

        * Note.  This report outlines Fair warning entries into reported for the above time frame.

      </xsl:template>
</xsl:stylesheet>

これが私の出力です...

1,TEST1,test2,

私はそれを次のように見せたい...

1,TEST
1,test2,

このキャラクターが改行を作成しないのはなぜですか

4

3 に答える 3

10

交換してみる

&#10;

<xsl:text>&#10;</xsl:text>

これにより、XSLT は、スタイルシートの書式設定の一部である (目的の出力の一部ではない) スタイルシート内の他の空白と区別することができます。

于 2013-01-29T17:22:03.807 に答える
9

XSLT のデフォルトの動作は、完全に空白であるスタイルシート内のテキスト ノードを無視することです (これは、空白の一部が のようなエンティティとしてエンコードされている場合でも当てはまります&#10;)。ただし、保持される 内のテキストは除きます<xsl:text>

これらの行を置き換えることをお勧めします:

<xsl:value-of select="ApplicationID"/>,<xsl:value-of select="USERID"/>
&#10;

これとともに:

<xsl:value-of select="concat(ApplicationID, ',', USERID, '&#10;')"/>

そうすれば、改行が出力に確実に含まれるようにする必要があります。

于 2013-01-29T17:25:53.690 に答える
0

エスケープ文字の代わりにこれを改行として使用してみてください:

<xsl:text>
</xsl:text>
于 2013-01-29T17:24:32.773 に答える