XSLT - 当2个xml标记共享相同的属性名称时,如何使用“value-of select =”

时间:2013-01-30 17:52:21

标签: xslt csv

我正在处理以下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)标记的“name”属性。

<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>

由于

1 个答案:

答案 0 :(得分:1)

要访问BaseTable的{​​{1}}属性,您只需稍微向上移动一下:

@name

请注意,即使属性名称不相同,您也需要执行此操作,因为当前引用上下文是<xsl:value-of select="../@name"/>,<xsl:value-of select="@name"/>,<xsl:value-of select="@type"/> 元素。

我还建议将上述行简化为单个columns

value-of