- - PR -
XSLで要素のソート
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-02 02:36
下のような元のXML文書を、要素の並び替えを行うことはXSLで可能
でしょうか? <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="xslsample.xsl"?> <文章 地方="沖縄"> <文 句点="。"> <天気 属性="おおむね" 文末="ています">晴れ</天気> <場所>沖縄地方は</場所> <気象 文末="の範囲内にあって">高気圧</気象> </文> </文章> 上記の文書をXSLを通しブラウザ表示させたとき "沖縄地方は高気圧の範囲内にあっておおむね晴れています。" という文を表示させたいのです。 プログラム初心者で下らない質問かもしれませんが、要素自体 をソートし表示する方法は、なかなか載っておらず行き詰って しまいこちらで質問させていただきました。 | ||||||||
|
投稿日時: 2003-12-02 03:10
別にソートする必要は無いのではないでしょうか? 例えば例出のXMLでは
とかでできませんか? このスタイルシートは動かしていないですし、concatはこんな風に幾つも引数を 取れたかどうかよく覚えていませんが、、、 まあ、私の言いたいのは、「ソートは必要ないのでは?」ということです | ||||||||
|
投稿日時: 2003-12-03 23:51
chaosさんがやられたいことは「要素の出現の順番にとらわれずにあるルールに沿った文章を組みたい」ということでしょうか?
だとすれば必要なのは並べ替えではなくて「フィルタリング」になります。 たとえばchaosさんのxmlソース文書を目的の文書に組む場合は次のXSLTスタイルシートになります。 「xslsample.xsl」 <?xml version="1.0" encoding="Shift_Jis"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="文章"> <xsl:apply-templates select="文"/> </xsl:template> <xsl:template match="文"> <xsl:apply-templates select="場所"/> <xsl:apply-templates select="気象"/> <xsl:apply-templates select="天気"/> <xsl:value-of select="@句点"/> </xsl:template> <xsl:template match="場所"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="気象"> <xsl:value-of select="."/> <xsl:value-of select="@文末"/> </xsl:template> <xsl:template match="天気"> <xsl:value-of select="@属性"/> <xsl:value-of select="."/> <xsl:value-of select="@文末"/> </xsl:template> </xsl:stylesheet> もしも違う目的があって並べ替えが必要であれば各要素にid属性を振ってソートキーにする手段はあります。 いずれにしても並べ替えをさせるなら階層は極力浅く単純にするべきでしょうし子孫関係は一定にしておいたほうがいいですね。 [ メッセージ編集済み 編集者: yatcin 編集日時 2003-12-03 23:52 ] |
1