开发者

XSLT to call secondary XML based on first XML element/attribute

开发者 https://www.devze.com 2023-04-09 12:51 出处:网络
love the stuff - newbie Æthelred here I have a XSLT 1.0 file pulling in a secondary XML (to a variable) to build a table

love the stuff - newbie Æthelred here

I have a XSLT 1.0 file pulling in a secondary XML (to a variable) to build a table <xsl:variable name="table_values" select="document('./table_variants/external_table.xml')/xml/channel_1"/>

I then get the values i need from the variable, eg: <xsl:value-of select="$table_values/monkey/tennis/@medals"/> <xsl:value-of select="$table_values/monkey/tennis/@bananas"/>

What i want to do is have t开发者_StackOverflow中文版he first XML trigger/steer where to look for the table data. I hoped i could, within the triggered XML, state the last part of the xpath - the 'channel_1' or 'channel_2', <xsl:value-of select="xml/external_table_channel_to_use"/> but apparently i cannot create a xpath on the fly like that

Please - What can i do?


What i want to do is have the first XML trigger/steer where to look for the table data. I hoped i could, within the triggered XML, state the last part of the xpath - the 'channel_1' or 'channel_2', <xsl:value-of select="xml/external_table_channel_to_use"/> but apparently i cannot create a xpath on the fly like that

Please - What can i do?

This can easily be done just extending the code that you already have.

Change this:

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

to this:

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

Needless to say, the variable (or global, external param) $channelName should have a value that is the (string) name of the element you want to use in the last location step of the XPath expression.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号