我是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'。一个真正的通用样式表将无法做出这样的区分。 –