2016-07-06 17 views
-2

嗨,我有一个XML文件,并试图使用xslt转换它。但问题是我在输出之前得到一条白线,我该如何消除它。 下面是我的XML在csv输出文件中使用xslt的空行

<?xml version="1.0" encoding="UTF-8"?> 
<UserInfo xmlns="http://XXXXXX"> 
    <User> 
      <UserName>MNO</UserName> 
      <Userid>1234</Userid> 
      <address>xyz</address> 
      <city>ABC</city> 
      <state>XX</state> 
      <zip>000000</zip> 
    </User> 
    <User> 
      <UserName>DEF</UserName> 
      <Userid>4567</Userid> 
      <address>IJK</address> 
      <city>GHI</city> 
      <state>XX</state> 
      <zip>000000</zip> 
    </User> 

</UserInfo> 

下面是我的XSL

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" > 
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/> 
<xsl:template match="/"> 
UserName,Userid,address,city,state,zip 
<xsl:for-each select="//User"> 
<xsl:value-of select="concat(UserName,',',Userid,',',address,',',city,',',state,',',zip,'&#xA;')"/> 
</xsl:for-each> 
</xsl:template> 
</xsl:stylesheet> 

当过我运行上面的我,然后再输出得到一条白线。

vendorName,vendorId,vendorTaxId,addressLine1,addressLine2,city,state,zip 
MNO,1234,xyz,ABC,XX,000000 
DEF,4567,IJK,GHI,XX,000000 

我得到的节点之上的白色空间(用户名,用户ID等)

回答

2

使用xsl:text输出文字文本,例如:

<xsl:template match="/"> 
    <xsl:text>UserName,Userid,address,city,state,zip&#xA;</xsl:text> 
    <xsl:for-each select="//User"> 
     <xsl:value-of select="concat(UserName,',',Userid,',',address,',',city,',',state,',',zip,'&#xA;')"/> 
    </xsl:for-each> 
</xsl:template> 

你现在的样子,整个文本节点写入输出 - 包括<xsl:template match="/">UserName之间的换行符。

+0

还告诉OP有关必须在他的'xsl:for-each/@ select'中解释的默认命名空间。 – kjhughes

+0

我做了同样的事情,但它没有奏效。它首先输出一个空行然后是数据 –

+1

@ rockstar_77你可以在这里看到它的工作:http://xsltransform.net/ej9EGdm - 请注意,我已经删除了默认名称空间声明从你的输入。正如上面kjhughes所指出的那样,您不能使用您的代码收到声明的输出。 –