2011-09-29 54 views
1

爱的东西 - 新手在这里ÆthelredXSLT调用二次基于XML的第一个XML元素/属性

我有一个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的 - 什么我可不可以做?

+0

你是什么意思调用一个XML?你想要一个基于一些.xml值的动态xpath? – FailedDev

+0

是的 - (我相信)那就是我所追求的。 是次要文件只是绒毛然后(对问题) –

+0

你不能只考虑所有的可能性,并使用或特定的来覆盖所有需要吗?你甚至可以根据你的条件调用特定的命名模板。 – FailedDev

回答

0

我想要做的是有第一个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"/> 

不用说,变量(或全球性的,外部PARAM)$channelName应该有一个值是(字符串)要在XPath表达式的上一个位置步骤中使用的元素的名称。

+0

辉煌 - 谢谢你,谢谢你为其他人提供的所有其他信息,帮助过我 - 我想知道在我遇到XSLT先生本人之前多久,Dimitre先生;-) –

+0

@Æthelred:不客气:) –