Мой xml выглядит следующим образом:
<topics>
<topic name="topic1" />
<topic name="topic2" />
<topic name="topic3" />
<topic name="topic4" />
<topic name="topic5" />
<topic name="topic6" />
<topic name="topic7" />
</topics>
<supertopics>
<supertopic title="supertopic1" name="1;topic1;#2;#topic2;3;#topic3" />
<supertopic title="supertopic2" name="4;#topic4;#7;#topic7" />
<supertopic title="supertopic3" name="2;#topic2;#3;#topic3" />
<supertopic title="supertopic4" name="5;#topic5;#7;#topic7" />
<supertopic title="supertopic5" name="3;#topic3;#7;#topic7" />
<supertopic title="supertopic6" name="4;#topic4;#7;#topic7" />
<supertopic title="supertopic7" name="5;#topic5;#7;#topic7" />
<supertopic title="supertopic8" name="2;#topic2;#6;#topic6" />
<supertopic title="supertopic9" name="5;#topic6;#7;#topic7" />
<supertopic title="supertopic10" name="3;#topic3;#4;#topic4" />
</supertopics>
Я в основном хочу по 1 супертопу на тему. Это значит, что у меня есть 7 тем и я хочу, чтобы с ними было связано 7 самых последних супертоп.У меня также есть своя дата, я делаю сортировку, но главное, я хочу, чтобы эти 7 супертопов были уникальными, так как в каждой теме есть несколько супертоп.
Поэтому я хочу, чтобы мой вывод был таким:
supertopic1 (topic1 is associated to supertopic1)
supertopic3 (topic2 is associated to supertopic1 but as its already there i want it to look for next supertopic its associated to)
supertopic5 (topic3)
supertopic2 (topic4)
supertopic4 (topic5)
supertopic8 (topic6)
supertopic6 (topic7)
Я использую xsl 1.0
, и я пытался добиться этого, используя, но я не мог найти способ сделать это:
<xsl:param name="FilteredAssets1">
<stopic></stopic>
<ttopic></ttopic>
</xsl:param>
<xsl:for-each select="topics/topic/@name">
<xsl:variable name="topicname">
<xsl:value-of select="."></xsl:value-of>
</xsl:variable>
<xsl:for-each select="/supertopics/supertopic[contains(@name,$topicname)]">
<xsl:if test="not(contains(msxsl:node-set($FilteredAssets1)/stopic,@title)) and not(contains(msxsl:node-set($FilteredAssets1)/ttopic,$programname))">
<stopic><xsl:value-of select="@title"></xsl:value-of></stopic>
<ttopic><xsl:value-of select="$programname"></xsl:value-of></ttopic>
</xsl:if>
</xsl:for-each>
</xsl:for-each>