XSLT

2011-08-16 5 views
0

を使用してCSVにXMLを変換する私はXSLTに新しいですし、私の要件が類似していると私はCSVにXMLを変換する必要があり、例えばのために、私はXMLを以下しているSO Thread i FollowedXSLT

上の以前のスレッドの一部を経てい

<?xml version="1.0" encoding="UTF-8"?> 
<impex> 
<record> 
<Employee/> 
<UID>aa</UID> 
<Name>HR Manager</Name> 
<Groups/> 
<Password>123456</Password> 
</record> 
<record> 
<Employee/> 
<UID>bb</UID> 
<Name>HR Executive</Name> 
<Groups/> 
<Password>123456</Password> 
</record> 
</impex> 

と私は次のCSV出力私はcsvファイルのヘッダーdynamicallを管理する必要が

INSERT_UPDATE Employee;UID[unique=true];name;groups(uid);password 
;"aa";"HR Manager";;"123456" 
;"bb";"HR Executive";;"123456" 

にこのXMLを変換する必要がありますY

iは値の一部が欠落している場合には世話をするためにも必要がありadditonalyが、私はそれらを提供することができます(XML要素に基づいて) 例えば が見つからないか、そのような場合、その空の私は、生成にはいくつかのデフォルト値を提供する必要がありますこのcsvファイルとしてCSVファイルをシステムにインポートされる最終的な出力

になり、私は前方に移動することができることにより、任意の開始ヘルプはずっと

+0

私はxsltについてよく知られていないので、ヘッダーを作成する方法を打ち明けました。ヘッダーの値はまだありません。 –

+1

W3CSchools XSLTチュートリアルを読むことをお勧めします。彼らは非常に良いです、あなたはおそらく1時間以内にあなたの問題を解決するために十分なことを学ぶでしょうhttp://www.w3.org/TR/xslt – ColinE

+0

確かにそれを行うだろう..しかし、任意のヘルプも高く評価されます、私は私が知っているこれは私の仕事を妨げるものです:) –

答えて

2

は、最も美しいのは理解されるであろうが、それは

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="text" /> 

<xsl:template match="/impex"> 
    <xsl:text>INSERT_UPDATE </xsl:text> 
    <xsl:apply-templates select="record[1]/*" mode="header"/> 
    <xsl:apply-templates select="record" /> 
</xsl:template> 


<xsl:template match="*" mode="header" > 
    <xsl:value-of select="name()"/> 
    <xsl:choose> 
     <xsl:when test="position()=last()"> 
      <xsl:text>&#10;</xsl:text> 
     </xsl:when> 
     <xsl:otherwise>;</xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

<xsl:template match="record"> 
    <xsl:apply-templates select="*"/> 
</xsl:template> 

<xsl:template match="*" > 
    <xsl:value-of select="."/> 
    <xsl:choose> 
     <xsl:when test="position()=last()"> 
      <xsl:text>&#10;</xsl:text> 
     </xsl:when> 
     <xsl:otherwise>;</xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 
の作品
+0

これはありがとうございます。私は自分自身もxsltも学ばなければなりませんが、私はそれをやっていますが、 –