2016-10-25 2 views
1

안녕 내 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 

답변

1

난 당신이 StringValue 요소에 대한 속성 name를 얻을 수는 XPath에 멍청이 생각합니다. 그런 경우는 XPath 선택이 될 것입니다 : 당신이 @svasa에서 이미 답의 일부를 가지고 같은

//StringValue/@name

+0

와우, 정말 고마워. 고마워. 12 시간 근무하고 있습니다. – Kostakiiiis

1

이 보이지만 또한 거의 확실하게 당신이 원하지 않는 것을 그주의

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

아니라

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

그렇지 않으면 당신은, 문자열에 문자 그대로 테스트됩니다 변수 평가없이.

+0

좋은 지적입니다. 처음에는 ''을 (를) 사용하여 프로그램에 사용해 보았지만 효과가 없었습니다. – Kostakiiiis

관련 문제