プロが教えるわが家の防犯対策術!

Javascriptを使ってMathMLの<math></math>にタグを追加したいと考えています。
ファイル名:sample.xhtml
ソース:
<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f. …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=shift_jis" />
<meta http-equiv="content-script-type" content="text/javascript" />
</head>
<body>
<math id="math" xmlns="http://www.w3.org/1998/Math/MathML">

</math>
<br />
<script>
function moji(){
var info = document.getElementById("math");
var element = document.createElement("mi");
element.innerHTML= "x";
info.appendChild(element);
}
</script>

<form>
<input type = "button" value="x" onclick ="moji()" />
</form>

</body>
</html>

これを実行し、ボタンを押すと"X"は表示されるんですが、

javascript: void window.open("","","").document.write("<textarea cols=80 rows=20>" + document.body.parentNode.innerHTML + "</textarea>")

これを使ってテキストに結果を吐き出してみると
<math id="math" xmlns="http://www.w3.org/1998/Math/MathML">

<mi xmlns="http://www.w3.org/1999/xhtml">x</mi>
</math>
このような感じで追加されてしまいます。

ネームスペースの問題だと思うんですが、解決方法がまったく分かりません。
element.removeAttributeNS(null,"xmlns");でネームスペースを削除しようと思いましたが、削除されませんでした。
こういった場合、どうしたらいいでしょうか。
よろしくおねがいします。

A 回答 (2件)

既に解決していると思うが、


すまん,
第一引数の名前空間コピペミスったorz
XHTMLの名前空間じゃなくてMathMLの名前空間じゃなきゃいけませんねorz
    • good
    • 0
この回答へのお礼

わざわざありがとうございます。

解決はできました。
またご縁があったらよろしくおねがいしますね^^

お礼日時:2008/12/22 01:22

var element = document.createElementNS("

http://www.w3.org/1999/xhtml","mi");

//XMLなので,innerTextを使いたいという気になれない。
//textContentを使いたい。
//(HTML5を基準にするならありなのかなあ?)
//>document.body.parentNode.innerHTML
//ここは,規格に沿うなら,
//http://www.w3.org/TR/DOM-Level-3-LS/Overview.htm …
//でOperaは出来る。
//沿わないけれどほかの方法としてGeckoやSafariでは
//https://developer.mozilla.org/en/XMLSerializer
//を使えばノードのソースを得られる
//今どうなってるか知らんが,調べた当初はあまり歓迎されてない様子だった
//https://bugzilla.mozilla.org/show_bug.cgi?id=155 …
    • good
    • 0
この回答へのお礼

早速の貴重な意見ありがとうございました。
おかげさまで解決することができました。
まだまだ知らないといけないことがたくさんありそうです。

お礼日時:2008/12/12 18:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!