2011-02-23 5 views
1
<xsl:variable name="filterValue" 
>@subject = 'Subject To Filter On'</xsl:variable> 
<xsl:for-each select="$Rows[$filterValue]"> 

$ filterValue는 평가되는 것이 아니라 리터럴 문자열로 처리됩니다. 변수의 값이 대신 계산되도록하려면 어떻게해야합니까?XSL for each filtering; 선택의 두 변수를 평가하는 방법?

원하는 결과 :이 전에 대답 한 경우 내가 문제가 온라인 검색을 보내고있어, 그래서 내가 XSL에 대해 많은 용어를 모르는 사과

<xsl:for-each select="$Rows[@subject = 'Subject To Filter On']"> 

. 감사.

+1

동적 된 XPath 평가의 XPath 1.0 /의 일부가 아닙니다 2.0 표준이나 XSLT 1.0/2.0. EXSLT 또는 자체 버전을 구현하는 XSLT 프로세서 용 확장 기능이 있습니다. XSLT 3.0에 이러한 기능이 포함되어있을 수도 있습니다. 주된 이유는 XSLT 처리 모델의 일부가 아니기 때문에 런타임 환경이 필요하다는 것입니다. 필터의 특정 제약 조건을 사용하여 질문을 확장하면 도움이됩니다. –

+0

좋은 질문입니다, +1. 설명과 완전하고 쉬운 솔루션에 대한 내 대답을 참조하십시오. :) –

+0

다음은 알레한드로의 답변을 보완하기위한 EXSL 확장 기능에 대한 참조입니다. http://exslt.org/dyn/functions/evaluate/index.html –

답변

1

XSLT 1.0 및 XSLT 2.0에서는 XPath 식을 동적으로 평가할 수 없습니다.

일반적으로 해결 방법이 있습니다. 이 특정한 경우

당신이 할 수 있습니다 (글로벌/외부) 매개 변수 : 코드에서

<xsl:param name="attrName" select="'subject'"/> 
    <xsl:param name="attrValue" select="'Subject To Filter On'"/> 

다음 :

<xsl:for-each select="$Rows[@*[name()=$attrName] = $attrValue]"> 
+0

감사합니다. Dimitre. 그것은 대단히 도움이됩니다. 나는 하나 이상의 필터와 최대 3 개의 필터를 가질 수있는 추가적인 제약에 직면 해있다. 6 개의 매개 변수를 갖게됩니다. 2 (위 그림 참조)의 각 필터에 대해? – KyleM

관련 문제