我是XSLT新手,一直在努力解決以下問題。我很感激能否幫助我如何解決這個問題。將未知XML轉換爲CSV的XSLT
這是我的XML文件,但元素名稱可能每次都有所不同。 XML在運行時創建。基本上我不知道XML文件中的所有元素。可能有更多或更少的元件,但基本上具有以下結構:
<University>
<language>en</language>
<name>Medi University</name>
<location>Rome</location>
<country>Italy</country>
<member>
<teacher>
<name>John Sting</name>
<joined>
<time>
<start/>
<end/>
</time>
<valid>true</valid>
</joined>
<name>Paul Ironman</name>
<joined>
<time>
<start/>
<end/>
</time>
<valid>true</valid>
</joined>
</teacher>
<teacherAssistant>
<name>Luna Tutti</name>
<joined>
<time>
<start>1.9.2015</start>
<end></end>
</time>
<valid>true</valid>
</joined>
</teacherAssistant>
</member>
<telephone>7538476398754</telephone>
<email>[email protected]</email>
</University>
我有試圖改變這個XSLT文件。正如我所說的,XML文件是在運行時創建的,我不知道XML內容。
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*">
<xsl:value-of select="name()"/>
<xsl:value-of select="text()"/>
<xsl:if test="*">
<xsl:apply-templates/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
上面代碼打印的CSV文件是這樣的:
elemenNameelementValue
elemenName2elementValue2
elemenName3elementValue3
等。
我想要的是像波紋管:
University
language, name, location, country,telephone, email
english, Medi, Rome,Italy,7538476398754,[email protected]
Teacter
name, joined, time, start,end,valid,
John Sting, , , , ,true
Paul Ironman, , , , , true
Teacher Assistant
name, joined, time, start,end,valid,
Luna Tutti, , ,1.9.2015, , true
我想相關的元素在一行出現在上面。
感謝
這是不可能寫一個通用的XSLT樣式表,將適合任何* * XML輸入。如果你想產生一個有意義的結果,你必須提供一些約束條件。在你的例子中,你爲'teacher'開始一個新的「表」,但不是'joined'。一個真正的通用樣式表將無法做出這樣的區分。 –