1
나는 사용자의 목록을 가지고 있고 그것은 단지 같은 나이이며, 같은 성을 가진 사용자를 보여줍니다 그래서를 필터링 할 - 아웃 원하는 넣어이위치 경로의 XSL 술어?
25, 스미스, 해리
(25), 스미스, 찰리
(36), 존스, 토마스
(36), 존스, 헨리<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="duplo.xsl"?>
<report>
<user>
<age>25</age>
<name>
<lastName>Smith</lastName>
<firstName>Harry</firstName>
</name>
</user>
<user>
<age>25</age>
<name>
<lastName>Smith</lastName>
<firstName>Charlie</firstName>
</name>
</user>
<user>
<age>36</age>
<name>
<lastName>Jones</lastName>
<firstName>Thomas</firstName>
</name>
</user>
<user>
<age>36</age>
<name>
<lastName>Smith</lastName>
<firstName>Henry</firstName>
</name>
</user>
<user>
<age>36</age>
<name>
<lastName>Jones</lastName>
<firstName>Henry</firstName>
</name>
</user>
<user>
<age>47</age>
<name>
<lastName>Jones</lastName>
<firstName>Paul</firstName>
</name>
</user>
<user>
<age>47</age>
<name>
<lastName>Smith</lastName>
<firstName>Simon</firstName>
</name>
</user>
</report>
지금까지이 일에 온
ylesheet, 각 쌍의 두 번째 사람의 목록을 제공합니다.
(25), 스미스, 찰리
(36), 존스, 헨리
내 생각 엔 내가 [2]에 대한-각하지만, 지금까지 내가 발견하지 않은에서보다 더 영리한 뭔가를 작성해야한다는 것입니다 무엇을 대신 사용해야하는지. 어떤 아이디어?
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no"/>
<xsl:key name="duplo" match="user" use="concat(age, '+', name/lastName)"/>
<xsl:template match="/">
<duplo>
<xsl:for-each select="//user[generate-id(.)=generate-id(key('duplo', concat(age, '+', name/lastName))[2])]">
<xsl:sort select="age"/>
<xsl:sort select="name/lastName"/>
<xsl:sort select="name/firstName"/>
<user>
<age><xsl:value-of select="age"/></age>
<name>
<lastName><xsl:value-of select="name/lastName"/></lastName>
<firstName><xsl:value-of select="name/firstName"/></firstName>
</name>
</user>
</xsl:for-each>
</duplo>
</xsl:template>
</xsl:stylesheet>
당신은 단지 내부
xsl:for-each
그냥 "초"를 따기보다는 그룹의 모든 항목을 얻을 필요가