节点名称作为参数

时间:2016-10-25 20:02:23

标签: xml xslt

我的xml看起来像这样

<Component name="super.useful.component">
      <StringValue name="component.title.1">
               <Value>some value</Value>
      </StringValue>
      <StringValue name="component.title.2">
               <Value>some more value</Value>
      </StringValue>
</Component>

我想做的就是将名称作为参数。

我的xsl看起来像这样:

<xsl:call-template name="showComponents">
                <xsl:with-param name="container" select="//Component/StringValue[@name????]/> 
            </xsl:call-template

因此,当我调用它时,它可以具有组件的两个名称。

<xsl:template name="showComponents">
        <xsl:param name="container" />
        <xsl:for-each select="Component[@name='$container']>    

        //do stuff here

2 个答案:

答案 0 :(得分:1)

我认为你正在摸索xpath以获取AA(i,:) = complex(i + sqrt(i));元素的属性name。如果是这种情况,则xpath选择器将为:

StringValue

答案 1 :(得分:1)

好像你已经从@svasa获得了部分答案,但是还要注意,你几乎肯定不是你想要的

    <xsl:for-each select="Component[@name='$container']>    

而是

    <xsl:for-each select="Component[@name=$container]>  

否则你将根据字符串'$container'进行字面测试,而不进行变量评估。