下記のxmlを
<xml xmlns:s="uuid:#dummy#" xmlns:dt="#dummy#" xmlns:rs="#dummy#" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30">
<s:AttributeType name="COUNTRY" rs:number="1" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="4" rs:fixedlength="true"/>
</s:AttributeType>
<s:AttributeType name="NAME" rs:number="2" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="9" rs:fixedlength="true" rs:maybenull="false"/>
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row COUNTRY="JAPAN" NAME="TARO" AGE="12"/>
<z:row COUNTRY="JAPAN" NAME="JIRO" AGE="23"/>
<z:row COUNTRY="CHINA" NAME="SABURO" AGE="34"/>
</rs:data>
</xml>
下記のxslを使用してCOUNTRY毎にグルーピングして
csv形式で出力したいですが以下のxslだとうまくいきません。
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:key name="COUNTRY" match="//z:row" use="@COUNTRY" />
<xsl:template match="/">
<xsl:for-each select="//z:row[not(@COUNTRY = preceding-sibling:://z:row/@COUNTRY)]">
<xsl:value-of select="@COUNTRY" />,<xsl:value-of select="@NAME" />,<xsl:value-of select="@AGE" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
[欲しい結果]
JAPAN,TARO
JAPAN,JIRO
スペース
CHINA,SABURO
No.2ベストアンサー
- 回答日時:
#1>"c:\windows\system32\msxml3.dll"にしなければいけないのではないか
あんまり詳しくはないのですが、私は、IE6で動作確認しています。
IE6は、msxml3.dllは使ってなかった(別途ダウンロードしてインストールしなければいけなかったような気がします)と思います。
質問文のXSLで欲しい結果にならない理由がDLLだという意味なら、
それは、違うと思います。
select="//z:row[not(@COUNTRY = preceding-sibling:://z:row/@COUNTRY)]">
でセレクトされるのは、それまでとCOUNTRYがことなるもの
つまり
JAPAN,TARO
CHINA,SABURO
の2つのデータをセレクトすることを意味していると思われるからです。
#1>XMLのデバッグにはどのような方法があるのでしょうか?
この時のこの値という意味なら、開発環境でインスペクトすればいいと思いますが、
構文エラーが表示されるので、まずは、IEで動作させてみるのがいいと思います。
例えば、質問文のXSLであれば、
xmlns:xsl="http://www.w3.org/TR/WD-xsl"に「xsl:keyがない」
ネームスペース「z:」が定義されていないとか表示されます。
あとついでに言えば、<xsl:key>宣言は、xsl:templateの中で使われていないので必要ないと思います。
前回教えて頂いた方法で要素ごとにグループ化することが出来ました。
xmlns:xsl="http://www.w3.org/TR/WD-xsl"にxsl:keyがないことが原因でした。
バージョンが違うのですね、これで動作が変わるとは思いもいませんでした、ただのコメントくらいに思っていましたので。
http://support.microsoft.com/kb/278674/JA/
上記のサイトでダウンロードしたscriptによると
どうやら私の環境ではmsxml3.dllが標準で使われているようでしたので、"c:\windows\system32\msxml3.dll"
に変更しました。
デバッグの仕方、<xsl:key>の解説までして頂いて
僕にとってはアドバイスではなくとてもいい回答になっていました。
本当にありがとうございます。
No.1
- 回答日時:
ちょっと違うかもしれませんが・・
---------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:rs="#dummy#" xmlns:z="#RowsetSchema">
<xsl:template match="/">
<xsl:for-each select="//z:row">
<xsl:if test="not(@COUNTRY=preceding-sibling::z:row/@COUNTRY)">
スペース
</xsl:if>
<xsl:value-of select="@COUNTRY" />,<xsl:value-of select="@NAME" />,<xsl:value-of select="@AGE" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
BLUEPIXY様 ありがとうございます。
こういう指定の仕方もあるんですね 勉強になります。
実はVC++の
MSXMLのXSLTを使用しているのですが、#importしているDLLが"c:\windows\system32\msxml.dll"としており"c:\windows\system32\msxml3.dll"にしなければいけないのではないかと疑っております。
XMLのデバッグにはどのような方法があるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Json のキーと値の出力の違いについて 2 2022/06/14 20:22
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XSLで、XMLの空タグを制御したい。
-
XMLをXSLを使いHTMLに変換した...
-
XMLのHTMLへの変換 (初心者)
-
タグの有無の判定
-
スタイルシートを使用したXM...
-
XSL中の改行、タブを無効にした...
-
xmlのテキストにリンクを張りた...
-
u_shortなどの省略した宣言につ...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
ルート要素ノードが2個ある場合?
-
あるノードリストに、特定の名...
-
XMLで要素が記述された順番に意...
-
UTF-8でエンコーディングとはど...
-
VBSでxmlの値を書き換えたい
-
SNMP リンクダウンとノードダ...
-
双方向リストの関数
-
XMLで特殊文字を扱うにはどうし...
-
Windowsで見かけるxmlファイル...
-
XML同じ名前の要素を自動で集約...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
XSLTで固定長データファイルを...
-
XSLTにてタグ名を取得する方法
-
XSLで、XMLの空タグを制御したい。
-
xmlの属性が重複しているのをx...
-
ノードの並び替え
-
XSL中の改行、タブを無効にした...
-
XMLのHTMLへの変換 (初心者)
-
xmlのテキストにリンクを張りた...
-
XMLをXSLを使いHTMLに変換した...
-
重複するものを消したい
-
空かスペースを認識させること...
-
スタイルシートを使用したXM...
-
XSLTがブラウザで表示されません。
-
XSL内でJavaScriptを記述し、Ja...
-
XMLとXSLTでリンクを張る方法
-
VBAからxml・スタイルシートを...
-
うまく表示されない
-
XML,XSL,JavaScriptの連携
-
XSLでの指定方法
おすすめ情報