2012-03-22 3 views
2

XSL을 사용하여 성의 알파벳순으로 직원의 XML 목록을 정렬하는 방법을 파악하려고합니다. 지금은 XML 정보를 XML과 동일한 순서로 표시합니다. XSL을 처음 사용하면서 <xsl:sort> 함수를 사용하는 방법을 완전히 이해했다고는 생각하지 않습니다. 나는 또한 을 <xsl:for-each>에 넣으려고했는데 그 중 하나는 작동하지 못했습니다. Heres는XSL을 사용하여 알파벳 순서로 XML 노드 정렬

내 XML :

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="Company1.xsl"?> 
<Company> 
    <Employee> 
     <Firstname>John</Firstname> 
     <Lastname>Smith</Lastname> 
     <ssn>635-35-7463</ssn> 
     <doh>February 3, 2011</doh> 
     <Age>34</Age> 
    </Employee> 
    <Employee> 
     <Firstname>Brad</Firstname> 
     <Lastname>Roberts</Lastname> 
     <ssn>789-65-4568</ssn> 
     <doh>February 13, 2012</doh> 
     <Age>25</Age> 
    </Employee> 
    <Employee> 
     <Firstname>Karen</Firstname> 
     <Lastname>Smith</Lastname> 
     <ssn>369-12-7415</ssn> 
     <doh>March 24, 2011</doh> 
     <Age>28</Age> 
    </Employee> 
    <Employee> 
     <Firstname>Eli</Firstname> 
     <Lastname>Smith</Lastname> 
     <ssn>489-32-8525</ssn> 
     <doh>September 14, 2010</doh> 
     <Age>38</Age> 
    </Employee> 
    <Employee> 
     <Firstname>Bill</Firstname> 
     <Lastname>Joel</Lastname> 
     <ssn>689-67-7634</ssn> 
     <doh>February 29, 2012</doh> 
     <Age>24</Age> 
    </Employee> 
    <Employee> 
     <Firstname>Kelly</Firstname> 
     <Lastname>Greene</Lastname> 
     <ssn>927-82-6873</ssn> 
     <doh>December 3, 2010</doh> 
     <Age>34</Age> 
    </Employee> 
</Company> 

그리고 heres는 내 XSL : 눈에서

<?xml version="1.0" ?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
    <HTML> 
    <HEAD> 
    <TITLE>Company Employees</TITLE> 
    </HEAD> 
    <BODY> 
    <H2>Company Employees</H2> 

    <xsl:for-each select="Company/Employee"> 
     <xsl:sort select="Employee/Lastname" data-type="text" order="ascending"/> 
     <xsl:sort select="Employee/Firstname" data-type="text" order="ascending"/> 

     <SPAN STYLE="font-weight:bold">FirstName: </SPAN> 
      <xsl:value-of select="Lastname" /> 
     <BR /> 
     <SPAN STYLE="font-weight:bold">LastName: </SPAN> 
      <xsl:value-of select="Firstname" /> 
     <BR /> 
     <SPAN STYLE="font-weight:bold">SSN: </SPAN> 
     <xsl:value-of select="ssn" /> 
     <BR /> 
     <SPAN STYLE="font-weight:bold">Date of Hire: </SPAN> 
     <xsl:value-of select="doh" /> 
     <BR /> 
     <SPAN STYLE="font-weight:bold">Age: </SPAN> 
     <xsl:value-of select="Age" /> 
     <P/> 
    </xsl:for-each> 
    </BODY> 
    </HTML> 
    </xsl:template> 
</xsl:stylesheet> 

답변

7

,

<xsl:sort select="Employee/Lastname" data-type="text" order="ascending"/> 
    <xsl:sort select="Employee/Firstname" data-type="text" order="ascending"/> 

이어야

<xsl:sort select="Lastname" data-type="text" order="ascending"/> 
    <xsl:sort select="Firstname" data-type="text" order="ascending"/> 
,536,

for-eachselect의 컨텍스트 노드를 설정하므로 표현식이 Employee 노드에 대해 평가됩니다.

또한

, textascending은 기본값입니다, 그래서 당신은 단지 그것을했다

<xsl:sort select="Lastname"/> 
    <xsl:sort select="Firstname"/> 
+0

을 쓸 수 있습니다! 다행 스러웠습니다. 매우 빠른 응답에 감사드립니다. – Jmh2013

+0

@ Fourthmeal70, 기꺼이 도와 드리겠습니다. 솔직히, 나는 XSLT로 여러가지 일을 할 수 있다는 것을 몰랐다. 그래서 나는 또한 배웠다. 차후의 질문에서 최상의 결과를 얻으려면 정답을 "수락 됨"(확인 표시)으로 표시해야합니다. – harpo

관련 문제