2016-07-06 48 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所指出的那樣,您不能使用您的代碼收到聲明的輸出。 –