1
這不是完全刪除我在此論壇中找到的重複項的主題。XSLT - 從映射結果中刪除重複項
我有一個鍵/值映射,我想從映射的最終結果中刪除重複項。
源文檔:
<article>
<subject code="T020-060"/>
<subject code="T020-010"/>
<subject code="T090"/>
</article>
映射:
<xsl:variable name="topicalMap">
<topic MapCode="T020-060">Value 1</topic>
<topic MapCode="T020-010">Value 1</topic>
<topic MapCode="T090">Value 3</topic>
</xsl:variable>
所需的結果:
<article>
<topic>Value 1</topic>
<topic>Value 3</topic>
</article>
XSLT我與(注工作,它有一個測試標籤和代碼確保映射工作):
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="utf8" indent="yes" exclude-result-prefixes="#all"/>
<xsl:template match="article">
<article>
<xsl:for-each-group select="subject" group-by="$topicalMap/topic[@MapCode = @code]">
<test-group>
<code>Current code: <xsl:value-of select="@code"/></code>
<topic>Current keyword: <xsl:value-of
select="$topicalMap/topic[@MapCode = @code]"/></topic>
</test-group>
</xsl:for-each-group>
<simple-mapping><xsl:apply-templates/></simple-mapping>
</article>
</xsl:template>
<!-- Simple Mapping Topics -->
<xsl:template match="subject">
<xsl:variable name="ArticleCode" select="@code"/>
<topic>
<xsl:value-of select="$topicalMap/topic[@MapCode = $ArticleCode]"/>
</topic>
</xsl:template>
<!-- Keyword Map -->
<xsl:variable name="topicalMap">
<topic MapCode="T020-060">Value 1</topic>
<topic MapCode="T020-010">Value 1</topic>
<topic MapCode="T090">Value 3</topic>
</xsl:variable>
</xsl:stylesheet>
通過這種方式做組不會產生任何東西。如果我複製源文檔中的主題,並在應用映射之前執行group-by =「@ code」,它可以刪除。但我想刪除結果重複的值不重複的鍵。
簡單映射的東西只是爲了顯示工作代碼。
什麼是使用密鑰(),使得它更好的效益? – LadyCygnus
給定' '處理器通過MapCode屬性值對'topic'元素進行索引,然後通過重複訪問找到匹配直接使用索引而不是搜索所有元素。 –