- PR -

XSLTで特定のグループ要素以外は全て無視したい

投稿者投稿内容
kou
会議室デビュー日: 2003/03/10
投稿数: 17
投稿日時: 2003-05-29 14:36
MMXさん、BBSハンドル名さん、ほむらさん、井上孝司さん、
ご返答頂きありがとうございました。

大変参考になりました。感謝しております。m(__)m

後からXML文書の要素が変化することについては、私個人としてはXMLの長所だと思っていたので、XSLTのデフォルトテンプレートルールについては違和感を感じます。

それはさておき、、、

みなさんのご助言をもとに、とりあえず解決策を決めましたのでご報告いたします。


■スタイルシート:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
<xsl:call-template name="EditMainElement"/>
</xsl:template>

<xsl:template name="EditMainElement">
<xsl:variable name="PATH" select="/main"/>
<xsl:for-each select="$PATH/member">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>


matchでテンプレート処理を実行するのではなく、全て名前付きテンプレートとして定義し、その冒頭で処理対象を変数に取得します。それをfor-eachでまわしてやれば希望通り、他の要素の構成が変わってもスタイルシート側は修正の必要がありません。
pull型というやつでしょうか。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-05-30 10:40
ども、ほむらです、
いわゆる、おふとぴというやつです。
ん〜、なんとなく、かみ合っていない気がしますけれども^^;;;
というよりも、考え方は皆さんと一緒だと思うのですが・・・・
僕の表現がわるいのかな?
-------------
僕としても要素の追加がされたり順序が変わったりしても
もともとのスタイルシートを作り直すとかいうのは考えたこと無いです。。。
修正くらいにとどめるようにしています。
時々めんどくさくなって作り直してしまいますが(笑

なんていうか*XML文書の要素が変化すること*の認識違いだと思うのですが

要素の名前がかわるとか、いままで
<node>value</node>
でかいていたものが
<node value="" />
になるとか、後は削除されたとか。
っていうのが僕の中での変化です。

要素は追加されて当然、内容(コンテント)に変更があるのも自然ととらえているので
このあたりは、*変化*として認識してなかったりして

極端な例としては
<date value="Thu, 1-Jan-1980 00:00:00 GMT" /> と書いていたものが
<date value="1980-1-1 00:00:00" />
となっても、変化の内には入っていないということです

スキルアップ/キャリアアップ(JOB@IT)