XSLT для вызова вторичного XML на основе первого элемента / атрибута XML - PullRequest
1 голос
/ 29 сентября 2011

люблю вещи - новичок Этельред здесь

У меня есть файл XSLT 1.0, извлекающий вторичный XML (в переменную) для построения таблицы <xsl:variable name="table_values" select="document('./table_variants/external_table.xml')/xml/channel_1"/>

Затем я получаю нужные мне значения из переменной, например: <xsl:value-of select="$table_values/monkey/tennis/@medals"/> <xsl:value-of select="$table_values/monkey/tennis/@bananas"/>

То, что я хочу сделать, - это иметь первый триггер XML, чтобы искать данные таблицы. Я надеялся, что в запущенном XML смогу указать последнюю часть xpath - channel_1 или channel_2, <xsl:value-of select="xml/external_table_channel_to_use"/> но, видимо, я не могу создать xpath на лету, как это

Пожалуйста, - что я могу сделать?

1 Ответ

0 голосов
/ 29 сентября 2011

То, что я хочу сделать, это иметь первый триггер XML, чтобы искать, где искать для таблицы данных. Я надеялся, что в запущенном XML смог последняя часть xpath - 'channel_1' или 'channel_2', <xsl:value-of select="xml/external_table_channel_to_use"/> но по-видимому, я не могу создать xpath на лету, как это

Пожалуйста - Что я могу сделать?

Это легко сделать, просто расширив уже имеющийся код.

Изменить это :

<xsl:variable name="table_values" select=
"document('./table_variants/external_table.xml')/xml/channel_1"/>

к этому :

    <xsl:variable name="table_values" select=
        "document('./table_variants/external_table.xml')
                           /xml/*[name() = $channelName"/>

Само собой разумеется, переменная (или глобальный внешний параметр) $channelName должна иметь значение, которое является (строковым) именем элемента, который вы хотите использовать на последнем шаге расположения выражения XPath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...