- PR -

DOMツリーの親の値を取得

1
投稿者投稿内容
こうせい
会議室デビュー日: 2002/04/12
投稿数: 1
投稿日時: 2002-04-12 17:59
はじめまして、IIS5.0+XMLで開発していて、XML初心者です。
さっそく質問なのですが、
<Root>
<A>
<AA>AAA</AA>
<B>
<BB>BBB</BB>
<C>
<CC>CCC</CC>
<D>
<E>EEE</E>
<EE>EEEE</EE>
</D>
</C>
</B>
</A>
</Root>

最小で上記のような構造のXMLファイルがあるとします。
サーバ側の処理(JavaScript)でXMLとXSLをtransformNodeして表示するカラクリにおいて、
次のような処理をしています。

-----aaa.asp----
var objDoc = new ActiveXObject("Microsoft.XMLDOM");
var objXSL = new ActiveXObject("Microsoft.XMLDOM");
objDoc.async=false;
objXSL.async=false;
objDoc.load(Server.MapPath("XXX.xml"));
objXSL.load(Server.MapPath("XXX.xsl"));

var obj = objDoc.documentElement.getElementsByTagName('D/E');
var obj2 = objDoc.documentElement.getElementsByTagName('ancestor::AA[last()]');
for(i=0;i<obj.length;i++) {
Response.Write('obj[i].text'); //<E>の内容
Response.Write('obj2[i].text'); //-----@<E>の親である<A>の内容
}

上記の@のところで、下記のエラーが出て取得できません。
必要なトークン 'eof' が ':' を検出しました。 .//ancestor-->:<--:AA[last()]

簡単なことのような気がするのですが、悩み続けています。
ご存知な方教えていただけないでしょうか?
よろしくお願いいたします。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2002-04-13 01:38
デフォルトでXPath は使えますか?
obj2 関連を消して、obj だけでも正常ですか

SDKのヘルプのサンプル・ソースでは、
Applies to: IXMLDOMDocument2
setProperty Method

its selectNode behavior
may change depending on
the SelectionLanguage setting in the new document.

--------------------------------------------
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
var selection;

xmldoc.loadXML ("<Customer><Name>Microsoft</Name></Customer>");
xmldoc.setProperty("SelectionLanguage", "XPath");
selection = xmldoc.selectNodes("Customer/Name");
alert(selection.expr + " -- " + selection.item(0).xml);
-----------------------------------------------
getElementsByTagName の引数型は tagname , expression のどちらか
確認
よねくら
常連さん
会議室デビュー日: 2002/04/24
投稿数: 29
投稿日時: 2002-04-24 18:58
getElementsByTagNameメソッドの引数は、ノード名もしくは「*」のどちらかです。XPath式を指定することはできません。XPathを使う場合は、MMXさんの示されたサンプルのようにselectNodesメソッドを使用します。
1

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