08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

xslt 重複の除去がわからない!(解決済み)

(解決しました。方法は下にあります)

xsltでxml中の重複を除去するやり方があるにはあるのですが、
それは要素や属性そのものが対象の場合。
それは私もすでに見つけています。
それは以下のようなパターン


しかし、要素に記述された値の部分文字列が重複しないようにというのは
見つからない…

sortを使って何とかならないかと試行錯誤していますが、
判らないんだなこれが。
何とかしたいな。

---
解決策

xsl:key と key(), generate-id()を使って解決できることが判明♪

自分で考えてたときは
<apply-templates select="foo[not(substring(., 12, 2) = substring(preceding::foo, 12, 2))]"/>
のようにして重複除去できないかとトライしてました。が、substringでくくると、
preceding::node名が集合として返ってこないので失敗。一番先頭のノードしか返ってこない。

そこでkey()を使うと、ノードをグルーピングして捕まえてこれるので、
グループの先頭に一致するものだけ処理することが可能:
<xsl:apply-templates select="foo[generate-id() = generate-id(key('by-number', substring(., 12, 2))[1])]"/>
また、generate-id()は要素一意に識別するIDを変換時に発行してくれるというもの。

詳しくは以下の参照先を見てください。

参照)http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3495333&SiteID=1
Secret

アクセスカウンター

プロフィール

青柳篤志

Author:青柳篤志
CreoSproutソフトウェア研究部へようこそ!
Android、Windows用ゲーム等公開しています。
Check



Add to Google

カテゴリー

最近の記事

最近のコメント

月別アーカイブ

Androidアプリ

レンダリングアルゴリズム完全更新!「CreamSplash」公開中!(2011/12/6更新)
(for Android 2.2 以上) 300円(税込み)
https://blog-imgs-15-origin.fc2.com/a/h/i/ahirujigen/app_icon_r02_100x100.png

シンプルパズルで女の子の水着イラストを見よう!「PanelFlip 2 Free」公開中!(2011/8/1公開)
(for Android 2.2 以上) 無料
app_icon_100x100.jpg

Match 3 タイプのパズルゲーム!「LED Match」公開中!(2011/8/28公開)
(for Android 2.2 以上) 無料
app_icon_100x100.jpg

シンプルパズルで女の子の水着イラストを見よう!「PanelFlip Free」公開中!(2011/7/22公開)
(for Android 2.2 以上) 無料
app_icon_100x100.jpg

Windowsアプリ

タワーディフェンス系リアルタイム戦術ゲーム「小戦術」販売中!(2011/5/6発売)
(for WindowsPC) 945円(税込み)

リアル液滴シミュレータ「ぶっかけ職人」販売中!
(for WindowsPC)

[まだまだ人気!]
数字と萌えの脳トレゲーム「カズアワセ2」販売中!
(for WindowsPC) 830円(税込み)

[まだまだ人気!]
「カズアワセ2」追加ステージパック「カズアワセ2.1」販売中!
(for WindowsPC) 105円(税込み)

インタラクティブイラスト集「MioPlay」販売中!
(for WindowsPC) 735円→315円(税込み)

ZIP圧縮連番動画結合ツール「動画即結たん1.1.0」(どうがそっけつたん)ただいま販売中!
(for WindowsPC) 630円 → 315円(税込み

twitter

pixiv

ブログ内検索

RSSフィード

リンク

リンク2




アクセスランキング





にほんブログ村 IT技術ブログ ゲーム開発へ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。