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としてフォーマットする方法を理解しました。以下のコードにないのは、各行の先頭でテーブルの名前を繰り返す方法です。親(relational: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>

ありがとう

4

1 に答える 1

1

BaseTable's属性にアクセスするに@nameは、階層を少し上に移動する必要があります。

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

columns現在の参照コンテキストは要素であるため、属性名が同じでなくてもこれを行う必要があることに注意してください。

また、上記の行を1つに簡略化することをお勧めしますvalue-of

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