preceding軸の応用

preceding-sibling軸を利用して重複するデータを除く。自分(カレントノード)より前の兄ノード(preceding-sibling)に同じデータが無い場合だけ出力する。

[サンプルXML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="preceding02.xsl"?>
<root>
<title>preceding軸の応用サンプル</title>
<data>
<kabu>東芝</kabu>
<kabu>日立製作所</kabu>
<kabu>シャープ</kabu>
<kabu>東芝</kabu>
<kabu>シャープ</kabu>
<kabu>日立製作所</kabu>
<kabu>シャープ</kabu>
<kabu>シャープ</kabu>
<kabu>松下電器産業</kabu>
<kabu>日立製作所</kabu>
<kabu>東芝</kabu>
<kabu>松下電器産業</kabu>
<kabu>ソニー</kabu>
<kabu>日立製作所</kabu>
</data>
</root>

XSLソース

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>
<xsl:template match="/">
<center><H3><xsl:value-of select="root/title"/></H3></center>
<xsl:apply-templates select="root/data/kabu"/>
</xsl:template>
<xsl:template match="kabu">
<xsl:if test="not(preceding-sibling::kabu[. = current()])">
<xsl:value-of select="."/><br/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

end(05/5/9)