У меня есть этот список пользователей и хочет, чтобы отфильтровать его, чтобы он показывает только пользователь, ровесники и имеет ту же фамилию - желательные из пут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>