2017-10-25 15 views
0

XSLT를 사용하여 알파벳순으로 사용자를 XML 파일에서 정렬하려고합니다. 여기 XSLT - for 루프에서 사전 순으로 정렬

내가이 (가) XSLT 내가 ROOT의 모든 ROW 모든 DEPARTMENT 내 통해 반복하고있어 한마디로

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" /> 
    <xsl:template match="ROOT"> 
     <table> 
      <tbody> 
       <tr> 
        <td> 
         <strong>Users</strong> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <xsl:for-each select="ROW/GROUPS"> 
          <xsl:if test="DEPARTMENT = 'Test 1'"> 
           <xsl:sort select="../FULLNAME" /> 
           <xsl:value-of select="../FULLNAME" /> 
           <br /> 
          </xsl:if> 
         </xsl:for-each> 
        </td> 
       </tr> 
      </tbody> 
     </table> 
    </xsl:template> 
</xsl:stylesheet> 

보고해야한다고 생각하는 방법을 XML 샘플

<ROOT> 
    <ROW> 
     <FULLNAME>Adam Low</FULLNAME> 
     <GROUPS> 
      <DEPARTMENT>Test 1</DEPARTMENT> 
      <DEPARTMENT>Test 2</DEPARTMENT> 
     </GROUPS> 
    </ROW> 
    <ROW> 
     <FULLNAME>Julie Nelson</FULLNAME> 
     <GROUPS> 
      <DEPARTMENT>Test 1</DEPARTMENT> 
      <DEPARTMENT>Test 2</DEPARTMENT> 
     </GROUPS> 
    </ROW> 
    <ROW> 
     <FULLNAME>Colin Low</FULLNAME> 
     <GROUPS> 
      <DEPARTMENT>Test 1</DEPARTMENT> 
     </GROUPS> 
    </ROW> 
    <ROW> 
     <FULLNAME>Bobby Low</FULLNAME> 
     <GROUPS> 
      <DEPARTMENT>Test 1</DEPARTMENT> 
     </GROUPS> 
    </ROW> 
</ROOT> 

입니다 그리고 여기 GROUPS 노드를 '테스트 1'에서 어느 지점에서 높이를 노드까지 끌어 올리고 <TD>에 쓸 수 있습니다. 모든 값을 알파벳순으로 정렬하고 싶습니다. <TD>에 넣으십시오. 현재 내가 가지고있는 곳은 <xsl:sort select="../FULLNAME" />입니다. 당신은 술어

<xsl:for-each select="ROW/GROUPS[DEPARTMENT = 'Test 1']"> 
    <xsl:sort select="../FULLNAME" /> 

의 상태를 표현할 수

+0

"작동하지 않습니다"라고 말하지 마십시오. 어떻게 실패하는지 알려주십시오. –

+0

@MichaelKay 글을 쓰는 순간 Michael이 프로세서가 던지는 오류 메시지를 이해하지 못했습니다. 질문을 게시하기 전에 조사를 해본 결과, 시간이 너무 짧았습니다. 코드 위에서 제조 하였다 오류였다 "SaxonCE.StandardErrorListener 11 : 29 : 스타일/XSL : 25.549 심각/XSL에서 에러 템플릿/표/TBODY/TR [2]/TD/XSL : 대 -each/xsl : if/xsl : http://fiddle.frameless.io/에서 정렬하십시오. XTSE0010 : xsl : if 요소에 xsl : sort 요소가 없어야합니다. " 리플렉션에서 지금 메시지를 이해합니다. 당시 XSL에 익숙하지 않았기 때문에 많은 도움을 얻지 못했습니다. –

+0

일반적인 문제입니다. 사람들은 오류 메시지를 이해하지 못하므로 게시하지 않습니다. 아무도 그 사실을 이해하지 못할 것이라고 상상하기 때문입니다. 오류 메시지는 정확히 무엇이 잘못되었는지를 표시합니다. xsl : sort가 잘못 배치되었습니다. 하지만 두 가지 다른 클라이언트 측 XSLT 프로세서 (Saxon-CE 및 Frameless)도 언급하고 있습니다. 어느 쪽도 적극적으로 유지 관리되지 않습니다. 더 나은 개발/테스트 환경 (예 : oXygen 또는 Stylus Studio)를 사용하면 더 나은 진단을 얻을 수 있습니다. –

답변

0

덕분에, 다음 xsl:sort은 올바른 위치에있다.

+0

정확히 내가 무엇을하고 있는지! 고맙습니다! –