0

我正在处理以下 xml 文件:

<relational:BaseTable name="Table1">
    <columns name="Column1" Type="Number" </columns>
    <columns name="Column2" Type="Date" </columns>
 ....

我想创建一个这样的 CSV 文件

Table1, Column1, Number
Table1, Column1, Date
Table2, ...

我已经弄清楚如何遍历 xml 并将输出格式化为 csv。下面的代码缺少的是一种在每行开头重复表名的方法。我无法弄清楚如何引用父(关系:BaseTable)标签的“名称”属性。

<xsl:for-each select="relational:BaseTable">
   <xsl:for-each select="columns">
      <xsl:value-of select="@name"/>,<xsl:value-of select="@type"/>
      <xsl:text>&#10;</xsl:text>
</xsl:for-each>
</xsl:for-each>

谢谢

4

1 回答 1

1

要访问BaseTable's@name属性,您只需将层次结构向上移动一点:

<xsl:value-of select="../@name"/>,<xsl:value-of select="@name"/>,<xsl:value-of select="@type"/>

请注意,即使属性名称不同,您也需要这样做,因为当前引用上下文是一个columns元素。

我还建议将上述行简化为一行value-of

<xsl:value-of select="concat(../@name, ',', @name, ',', @type)"/>
于 2013-01-30T18:34:17.107 回答