次のXSLで動作させています。
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xml:space="default" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:for-each select="document('取り込むXMLファイル')//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
<xsl:for-each select="//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
ここまでは出来たのですが、xsl:sortでまとめてsortするにはどうすればいいのでしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは、なんか、変な風にとられてもいやなので、他の人の回答が付くのを待ってましたが、付かないようなので、また回答しておきます。
(また!)勘違いコメントだったらすみません。
*
<xsl:for-each select="document('取り込むXMLファイル')//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
<xsl:for-each select="//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
の部分を
<xsl:for-each select="//z:row|document('取り込むXMLファイル')//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
のように、まずは、1つにまとめることができます。
そうすることで、xsl:sortでまとめてsortできます。
xsl:sortについては、既知かもしれませんが
<xsl:for-each select="//z:row|document('取り込むXMLファイル')//z:row">
<xsl:sort select="ソートキー" lang="ja" data-type="text" order="ascending" />
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
のように書きます。
ソートキーが数値の場合、data-typeにはnumberを
降順にするには、orderをdescendingにします。
この回答への補足
ありがとうございます、
BLUEPIXYさんのアドバイスで上手くいきました!
なんか変かもしれないですよね、僕はほんと感謝してますけど(笑
本当は下のようなソースでまったく同じ構造の2つのXMLソースを読み込み
pDoc_xml1,pDoc_xml2をXSLでなくDOMで結合したいのですが、どうしたらよいのでしょうか?
xml1,2読み込み(XMLのソース以外は同じソースです)
IXMLDOMDocumentPtr pDoc_xml;
IXMLDOMNodeListPtr pNodeList;
IXMLDOMNode *pIXMLDOMNode=NULL;
HRESULT hr;
SYSTEMTIME st;
GetLocalTime(&st);
char szDate[64];
pDoc_xml.CreateInstance(__uuidof(DOMDocument30));
pDoc_xml->put_async(VARIANT_FALSE);
pDoc_xml->validateOnParse = FALSE;
sprintf(szPath_Xml, "%s\\result\\xml1.xml(またはxml2.xml)", szPath);
pDoc_xml->load( _variant_t(szPath_Xml) );
sprintf(szDate, "//z:row[@INTIME>'%d/%02d/%02d 12:00:00']", st.wYear, st.wMonth, st.wDay);
pNodeList = pDoc_xml->selectNodes(szDate);
IXMLDOMSelection *pIXMLDOMSelection=NULL;
hr = pNodeList->QueryInterface(IID_IXMLDOMSelection, (void**)&pIXMLDOMSelection );
if(SUCCEEDED(hr) && pIXMLDOMSelection){
LONG uLength;
hr = pIXMLDOMSelection->get_length(&uLength);
if(SUCCEEDED(hr)){
pIXMLDOMSelection->removeAll();
}
}
pDoc_xml->save(szPath_Xml);
結合したいのは
xml1.xml(xml2.xml):
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30">
<s:AttributeType name="MACHINE" rs:number="1" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="8190"/>
</s:AttributeType>
<s:AttributeType name="PARTS_NO" rs:number="2" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="8190"/>
</s:AttributeType>
<s:AttributeType name="STATUS" rs:number="3" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="8190"/>
</s:AttributeType>
<s:AttributeType name="STOCK_NUM" rs:number="3" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="8190"/>
</s:AttributeType>
<s:AttributeType name="INTIME" rs:number="3" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="8190"/>
</s:AttributeType>
<s:extends type="rs:rowbase"/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row MACHINE="APPLE" PARTS_NO="1" STATUS="WAIT" STOCK_NUM="4" INTIME="2005/09/09 12:33:11"/>
<z:row MACHINE="DELL" PARTS_NO="2" STATUS="ENOUGH" STOCK_NUM="43" INTIME="2005/09/05 11:13:12"/>
<z:row MACHINE="NEC" PARTS_NO="3" STATUS="EMPTY" STOCK_NUM="1" INTIME="2005/09/09 02:03:01"/>
<z:row MACHINE="HP" PARTS_NO="4" STATUS="WAIT" STOCK_NUM="3" INTIME="2005/03/09 11:32:31"/>
</rs:data>
</xml>
の xml1.xmlの<rs:data>の子のz:rowをxml2.xmlの<rs:data>の子として結合させたいです。
補足させてください、
IXMLDOMDocumentPtr pDoc_xml1;
IXMLDOMDocumentPtr pDoc_xml2;
[XMLの読み込みは先のソースの通りです。]
IXMLDOMNode *pIXMLDOMNode1 = NULL;
IXMLDOMNode *pIXMLDOMNode2 = NULL;
//xml1
pIXMLDOMNode1 = pDoc_xml1->selectSingleNode("//z:row");
//xml2
pIXMLDOMNode2 = pDoc_xml2>selectSingleNode("//rs:data");
//xml1+xml2
pIXMLDOMNode2->appendChild(pIXMLDOMNode1);
としたのですがappendChildでエラーを起こして落ちてしまいます。
開発環境はVC++6.0 MSXML3.0です。
importNodeを使うという書き込みも見たのですが、
pDoc_xml1->としても、そのようなメソッドは現れませんでした。
アドバイスを頂けないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xmlのテキストにリンクを張りた...
-
スタイルシートを使用したXM...
-
■XSLT■固定文字を使ったループ...
-
タグの有無の判定
-
XSLで、XMLの空タグを制御したい。
-
xslの書籍を探しています
-
XSLTの記述方法
-
XMLのHTMLへの変換 (初心者)
-
特殊記号が勝手にエスケープさ...
-
CPUの考え方を教えてください ...
-
eclipseへのxmlファイル追加
-
東芝のDynabookなのですがアン...
-
xmlファイルが上手にHTMLに変換...
-
XMLで要素が記述された順番に意...
-
昔Winnyってありましたけど、あ...
-
2分探索木の高さを求めるプロ...
-
XML、XSLTの適応エラー(IEから...
-
MSXMLを使ってノードを削除した...
-
同じタグ名の項目取得
-
UTF-8でエンコーディングとはど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XMLのHTMLへの変換 (初心者)
-
XSLで、XMLの空タグを制御したい。
-
タグの有無の判定
-
htmlに変換されない
-
スタイルシートを使用したXM...
-
xslでの最小値、最大値の取得
-
ノードの並び替え
-
VBAからxml・スタイルシートを...
-
XSL内でJavaScriptを記述し、Ja...
-
xmlのテキストにリンクを張りた...
-
重複するものを消したい
-
<xsl:key>とtopreceding-siblin...
-
XSL中の改行、タブを無効にした...
-
スタイルシートについて
-
XMLをXSLを使いHTMLに変換した...
-
XSLTで直下のテキストのみ取得...
-
XSLTにてタグ名を取得する方法
-
xsl:variable の使用方法
-
東芝のDynabookなのですがアン...
-
CPUの考え方を教えてください ...
おすすめ情報