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
' 'プロセッサは 'topic'要素を' MapCode'属性値で索引付けし、繰り返しアクセスすると一致すべての要素を検索するのではなく、索引を使用して直接実行できます。 –