- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:一つ前の値)
XMLとXSLの結果を比較して重複を排除したい
このQ&Aのポイント
- XMLとXSLの結果を比較して重複を排除する方法について教えてください。
- XSLでXMLを加工する際に、現在の値と前の値を比較して重複を排除する方法が上手くいきません。
- XSLのfor-each文を使ってXMLを加工している際に、重複を排除する方法について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>NAME:A attr:3 >NAME:B attr:1 >NAME:B attr:2 >という結果が得られました。 この結果は正しいのでしょうか? 結果から逆算するとデータは <ALL> <EX attr='1'><NAME>B</NAME></EX> <EX attr='2'><NAME>B</NAME></EX> <EX attr='3'><NAME>A</NAME></EX> </ALL> の書き間違いですね。 -- ●preceding-siblingとkey関数を使ってみる <xsl:key name="NAME" match="EX" use="NAME" /> <xsl:template match="ALL"> <xsl:for-each select="EX[not(NAME = preceding-sibling::EX/NAME)]"> <xsl:sort select="NAME"/> <dt>NAME: <xsl:value-of select="NAME"/> <xsl:for-each select="key('NAME', NAME)"> <xsl:sort select="@attr"/> <dd>attr: <xsl:value-of select="@attr"/></dd> </xsl:for-each> </dt> </xsl:for-each> </xsl:template>
お礼
すみません!XML間違っていました。 fatbackさんが書いておられる通りでした。 すみません。 おかげ様でできました。 ありがとうございました!!