2013-06-07 2 views
2

XSLT 1.0을 사용하여 HTML 형식으로 변환 된 XML 파일이 있지만 사용자 선택에 따라 데이터를 정렬하고 싶습니다. PHP에서 선택 변수를 설정 했으므로 작동하지만이 조건부 정렬을 수행하는 방법을 모르겠습니다.XSL의 조건부 정렬

여기에 변수 $ sort_by 내 코드 :이 코드는 작동하지 않습니다

 <xsl:for-each select="gpx:gpx/gpx:wpt"> 
     <xsl:choose> 
      <xsl:when test="$sort_by = 'name'"> 
       <xsl:sort select="grdspk:cache/grdspk:name"/> 
      </xsl:when> 
      <xsl:when test="$sort_by = 'owner'"> 
       <xsl:sort select="grdspk:cache/grdspk:owner"/> 
      </xsl:when> 
      <xsl:when test="$sort_by = 'difficulty'"> 
       <xsl:sort select="grdspk:cache/grdspk:difficulty"/> 
      </xsl:when> 
     </xsl:choose> 

, 내가 컴파일 오류 "요소의 종류가 컨텍스트 내에서 허용되지 않습니다"가 있습니다.

도움 주셔서 감사합니다.

답변

5

xsl:sort 선택 기준

<xsl:for-each select="gpx:gpx/gpx:wpt"> 
    <xsl:sort select="grdspk:cache/grdspk:*[local-name()=$sort_by]"/> 
    <!--additional logic goes here--> 
</xsl:for-each> 
+0

니스와 우아한 해결책, 일의의 XPath의 일부로 변수를 사용! – gaborsch

+0

그래, 완벽하게 작동합니다! ' Surfoo

+1

난 그냥 케이스를 무시하기위한 기능을 번역 추가 />' – Surfoo