Получение ключевого столбца в цикле + XSLT - PullRequest
0 голосов
/ 29 марта 2010

Мне нужна помощь по повторному получению значений первичного ключа из xml. Вот файл xml.

<?xml version="1.0" encoding="UTF-8"?>
<request id="test">
<dataSets>
 <dataSet name="dim_table" friendlyName="dim" tableType="DIM">
 <fields>
  <field name="customer_id" dataType="varchar" primaryKey="true"/>
  <field name="customer_name" dataType="VARCHAR" primaryKey="false"/>
  <field name="customer_address" dataType="CHAR" primaryKey="false"/>
 </fields>
 </dataSet>
</dataSets>
</request>

требуемый вывод

KeycolumnName, ColumnName
customer_id, customer_id
customer_id, customer_name
customer_id, customer_address

Может ли кто-нибудь помочь мне в этом?

Ответы [ 2 ]

0 голосов
/ 29 марта 2010

Обновленный код (предыдущий ответ не смог обработать столько нового кода):

Этот код работает для меня:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:for-each select="//dataSet">
            <xsl:for-each select="fields/field">
                KeyColumnName="<xsl:value-of select="../field[@primaryKey='true']/@name" />" ColumnName="bar <xsl:value-of select="@name" />"
            </xsl:for-each>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
0 голосов
/ 29 марта 2010

XML форматирование необходимо для полного ответа, но:

<xsl:template match="/dataSets/dataSet/fields">
    <xsl:for-each select="field">
        <xsl:value-of select="@name" />
    </xsl:for-each>
</xsl:template>

(пример кода не тестировался)

Используйте XPath для определения содержимого атрибутов "select".

Ссылка: http://www.w3schools.com/xsl/el_for-each.asp

...