開発^3

Web開発、宇宙開発、ゲーム開発の3種類についてつらつらと

Firefoxとchromeのxpath解釈の違い

document.createElementで作られたノードをdocument.evaluateで探す場合、FirefoxChromeで違いがあるみたい。
前回の記事と同じく、これも「./」を指定しろ。ってことですかね。

XPath Firefox Chrome
/sample/value/text() 取得可 取得不可
./sample/value/text() 取得可 取得可

はて、これはどっちが仕様として正しいんだろう。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<script type="text/javascript">
<!--
function sample()
{
	var element = document.createElement("sample");
	element.innerHTML = "<sample><value>hoge</value></sample>";
	
	//	Firefox: hoge		Chrome: 空文字
	alert(document.evaluate("/sample/value/text()", element, null, XPathResult.STRING_TYPE, null).stringValue);

	//	Firefox: hoge		Chrome: hoge
	alert(document.evaluate("./sample/value/text()", element, null, XPathResult.STRING_TYPE, null).stringValue);
}
//-->
</script>
</head>
<body>
<input type="button" onclick="sample();" value="Sample">
</body>
</html>