使用XSL并在CSV文件中垂直显示数据

时间:2019-10-09 11:59:01

标签: xml csv xslt xslt-2.0

数据源

我正在尝试采用以下XML结构,并使用XSL将其转换为CSV文件。

<Root>
  <Row>
    <Employee>Harry</Employee>
    <Employees_Manager_1>Ron</Employees_Manager_1>
    <Employees_Manager_2>Hermione</Employees_Manager_2>
    <Employees_Manager_3>Ginni</Employees_Manager_3>
  </Row>
  <Row>
    <Employee>Ross</Employee>
    <Employees_Manager_1>Emma</Employees_Manager_1>
    <Employees_Manager_2>Monica</Employees_Manager_2>
    <Employees_Manager_3>Rachel</Employees_Manager_3>
  </Row>
</Root>

所需的CSV输出

    Harry,Ron,
    Harry,Hermione,
    Harry,Ginni,
    Ross,Emma,
    Ross,Monica,
    Ross,Rachel,

尝试失败

我是XML / XSL的初学者,到目前为止,我只知道如何使用以下内容:

<xsl:template match="Root">
  <xsl:for-each select="Row">
    <xsl:value-of select="Employee"/>
    <text>,</text>
    <xsl:value-of select="Employees_Manager_1"/>
    <text>,</text>
    <xsl:value-of select="Employees_Manager_2"/>
    <text>,</text>
    <xsl:value-of select="Employees_Manager_3"/>
    <text>,</text>
    <endTag>&#xD;&#xA;</endTag>
  </xsl:for-each>
</xsl:template>

我得到这个结果:

    Harry, Ron, Hermione, Ginni,
    Ross, Emma, Monica, Rachel,

问题

是否可以通过XSL获得所需的输出?谢谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试

<h1>Hello world!&nbsp;<span class="customplaceholder">Thank you for signing up</span></h1>

<p>I&#39;m an instance of CKEditor.</p>

演示: https://xsltfiddle.liberty-development.net/jz1PuP2

答案 1 :(得分:0)

在XSLT 2/3中,为了将XML映射到CSV,我通常将模板应用于应该映射到CSV中的一行的元素,然后使用xsl:value-of和{ {1}}属性:

separator

https://xsltfiddle.liberty-development.net/pPJ8LV6