我有一个xslt文件,可以创建一个简单的平面文件。 输出文件最初具有.txt扩展名,但现在它需要是.dat扩展名。 一切都很完美,但是一旦我更改了扩展名,.dat文件就无法正确解释换行符。
这是我的XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="text" encoding="utf-8" />
<xsl:strip-space elements="*"/>
<!-- Output File type is .DAT => This extension uses a different value for new line characters -->
<xsl:variable name="newline" select="' '"/>
<!-- <xsl:variable name='newline'><xsl:text> -->
<!-- </xsl:text></xsl:variable> -->
<xsl:variable name="tab" select="'	'" />
<xsl:variable name="comma" select="','" />
<xsl:variable name="padding" select="' '" /> <!-- 30 spaces for padding -->
<xsl:variable name="zeroes">00000000000</xsl:variable>
<xsl:variable name="sevzeroes">0000000</xsl:variable>
<xsl:template match="/">
<xsl:for-each select="/ROOT/Payment">
<!-- Filler -->
<xsl:value-of select="substring(concat($padding, $padding), 1, 31)"/>
<!-- Check Amount -->
<xsl:value-of select="substring(concat($zeroes, amount), (1 + string-length(amount)), (11 + string-length(amount)))"/>
<!-- Credit Indicator -->
<xsl:choose>
<xsl:when test="is_void = 0">
<xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="is_void = 1">
<xsl:text>C</xsl:text>
</xsl:when>
</xsl:choose>
<!-- Filler -->
<xsl:text> </xsl:text>
<!-- Check Number -->
<xsl:value-of select="substring(concat($sevzeroes, check_number), (1 + string-length(check_number)), (7 + string-length(check_number)))"/>
<!-- Check Date -->
<!-- Incoming Date Format 2014-03-11-07:00 -->
<xsl:variable name="firstDate" select="last_printed" />
<xsl:variable name="day" select="substring-before(substring-after(substring-after($firstDate, '-'), '-'), '-')"/>
<xsl:variable name="month" select="substring-before(substring-after($firstDate, '-'), '-')"/>
<xsl:variable name="year" select="substring-before($firstDate, '-')"/>
<xsl:value-of select="substring(concat($month, $day, $year, $padding), 1, 8)"/>
<!-- TYPE -->
<xsl:text>S</xsl:text>
<!-- Filler -->
<xsl:value-of select="substring(concat($padding, $padding), 1, 31)"/>
<xsl:value-of select="$newline"/>
<!-- </xsl:if> -->
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我尝试将换行变量的值设置为

,ഊ
,

,甚至使用<xsl:variable name='newline'><xsl:text>
</xsl:text></xsl:variable>
我在这里遗漏了什么吗? 感谢
答案 0 :(得分:1)
我发现答案是使用x0D
和x0A
来修改换行变量的值。
这是变量换行符:
<xsl:variable name="newline" select="'
'"/>
希望这有助于其他人遇到同样的问题。