을 사용하고이 지금 (도있을 수 있습니다 중복 된 이름)
<xsl:for-each select="/Types/Type/Names/Name/text()[generate-id()=generate-id(key('Name',.)[1])]">
<xsl:call-template name="typename">
</xsl:call-template>
</xsl:for-each>
<xsl:template name="typename">
<li>
<a href="somelogicforurl"> <xsl:value-of select="."/> </a>
</li>
</xsl:template>
처럼 보인다 . 내가 정확히에 정렬 할 모르겠어요
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Types">
<xsl:element name="SortedList">
<xsl:for-each select="Type">
<xsl:sort select="Names/Name" />
<xsl:element name="a">
<xsl:attribute name="href">link</xsl:attribute>
<xsl:value-of select="Names/Name" />
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
있었으나 결국 XSL의 '선택'속성 변경 :이 예를 외삽 시도 정렬 키를 지정 정렬 태그를.
또는 특정 순서를 강제하려는 경우, 당신은 할 수 단지 폭력을 :
<xsl:template match="Types">
<xsl:element name="SortedList">
<xsl:apply-templates select="Names[Name='Timber']" />
<xsl:apply-templates select="Names[Name='Bryan']" />
<xsl:apply-templates select="Names[Name='Ryan']" />
</xsl:element>
</xsl:template>
<xsl:template match="Names">
<xsl:element name="a">
<xsl:attribute name="href">link</xsl:attribute>
<xsl:value-of select="Name" />
</xsl:element>
</xsl:template>
그러나 이렇게함으로써, 당신은 일을 놓치고, 또는 두 가지를 포함하여 위험이 있습니다. '라이언'에 대한 ('; 목재'의 길이), 14 상당히 유연하지만 정렬 순서의, 당신은 심지어 종류에
<xsl:sort select="string-length(substring-before(';Timber;Bryan;Ryan',Names/Name))" />
이 문장은 '브라이언'에 대한 '목재', 8 일을 반환합니다 수 (길이 '; 목재; 브라이언;'), 이것을 정렬하여 원하는 순서대로 표시되도록 할 수 있습니다. 이 솔루션은 'substring-before'함수가 길이가 0 인 빈 문자열을 반환하기 때문에 상단에 정렬 순서에 포함시키지 않은 것을 넣을 것입니다. 물론주의해야합니다. 하나가 다른 사람의 부분 문자열 일 때 조기에 일치하지 않는다는 것; 예를 들어 이것이 모두 소문자 인 경우 'ryan'을 'bryan'의 일부로 인식하기에 너무 일찍 일치시킵니다.