<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog:ponpon-village.net &#187; Ajax</title>
	<atom:link href="http://ponpon-village.net/blog/archives/category/web/ajax/feed" rel="self" type="application/rss+xml" />
	<link>http://ponpon-village.net/blog</link>
	<description>ITとHiroshimaと。あとサッカーとかゲームとか。</description>
	<lastBuildDate>Thu, 17 Oct 2013 01:24:43 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>AjaxとWindowsの微妙な関係</title>
		<link>http://ponpon-village.net/blog/archives/2006/0427-223157.html</link>
		<comments>http://ponpon-village.net/blog/archives/2006/0427-223157.html#comments</comments>
		<pubDate>Thu, 27 Apr 2006 13:31:57 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2006/ajaxwindows.html</guid>
		<description><![CDATA[久々、Ajaxネタ。 なんだか意味深（？）なタイトルだけど・・・ IEでAjax &#8230; <a href="http://ponpon-village.net/blog/archives/2006/0427-223157.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>久々、Ajaxネタ。<br />
なんだか意味深（？）なタイトルだけど・・・<br />
IEでAjaxを実践する時に、</p>
<div id="source">var xmlhttp = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);</div>
<p>とかするわけなんだけど、<br />
良かれと思って、<br />
<b class="red">Msxml2.XMLHTTP.5.0</b> や <b class="red">Msxml2.XMLHTTP.4.0</b> など、<br />
ちょっとバージョンの違うものがインストールされてる環境でも<br />
使えるようしてました。<br />
しかし・・・</p>
<p><span id="more-115"></span><br />
たしか、２ヶ月前くらいまでは問題なかったんですけどね、<br />
先日、ふと自分のサイトをいろいろ見てたら<br />
動かないところがあるんですよ～！！！<br />
それは、Ajaxlstを実践してたところで、<br />
調べたところ、バージョンが違うっていうエラーが出てるんですね。<br />
まぁ、心当たりはあったので、すぐに<br />
Msxml2.XMLHTTP.5.0 や Msxml2.XMLHTTP.4.0 ではなく、<br />
Msxml2.XMLHTTP や Microsoft.XMLHTTP を優先して使うように変更しました。<br />
それで、一応、サイト自体は事なきを得たわけですが、<br />
なぜそうなったかを考えると、<b class="red">Windows Update</b> しか思いつかない。<br />
特に、IEのパッチとかだと、こっそり変更されてたり、<br />
あるいは修正を加えた別の箇所の影響でおかしくなってたりするのかもしれない。<br />
とりあえず、<b class="red">Windows Update したら、Ajax を使ってるサイトは動作確認したほうがいい</b>と思う。</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2006/0427-223157.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IEとFireFoxの違い（２）</title>
		<link>http://ponpon-village.net/blog/archives/2005/0909-101749.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0909-101749.html#comments</comments>
		<pubDate>Fri, 09 Sep 2005 01:17:49 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/iefirefox_1.html</guid>
		<description><![CDATA[Ajax というか、Google Maps API を使った時の違いなのだけど、 &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0909-101749.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ajax というか、Google Maps API を使った時の違いなのだけど、<br />
これは意外と痛いと思う人もいるかもな～と思ったことがあります。<br />
それは何かというと・・・</p>
<p><span id="more-56"></span><br />
Google Maps API  に表示するアイコンの画像を変更することが出来るのですが、<br />
アイコン画像をアニメーションアイコンにすると・・・<br />
<b class="red">IE ではただの画像（アニメーションしない）が、<br />
Firefox ではアニメーションしてる！</b><br />
ってことに気付いた。<br />
まぁ、アイコンを変更しないなら関係ないことだけども。<br />
画像の扱いが、IE と Firefox で違ってたりするので、その関係なのかなぁ～。<br />
ただ、アニメーションさせたい！って思ってる人には、結構痛いと思ったし、痛かった。<br />
Google Maps API でアイコンを変えたい！と思った人は、<br />
<a href="http://ponpon-village.net/ajax/googlemapsapis.htm#GIcon_code_" target="_blank" title="">こちら</a>で解説しているのでどうぞ。</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0909-101749.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>広島っぷ、危うし！？</title>
		<link>http://ponpon-village.net/blog/archives/2005/0824-101700.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0824-101700.html#comments</comments>
		<pubDate>Wed, 24 Aug 2005 01:17:00 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/post_20.html</guid>
		<description><![CDATA[広島っぷに好敵手が現れた！ 新潟マップ書き込め～るだ。 向こうはそんなつもりはな &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0824-101700.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ponpon-village.net/maps/hiroshimaps.htm" target="_blank" title="広島っぷ">広島っぷ</a>に好敵手が現れた！</p>
<p><a href="http://d.hatena.ne.jp/syachonosaru/20050823/1124782712" target="_blank" title="">新潟マップ書き込め～る</a>だ。</p>
<p>向こうはそんなつもりはないかもしれないが、<br />
こちらから見れば明らかにやりたいことがかぶってる！<br />
全く同じではないが、そんな細かいことはどうでもいい。<br />
というか、パクられてる（？）などと思いつつも、<br />
せっかくなので、こちらも対抗して、書き込めるようにしてみた。</p>
<p><span id="more-51"></span><br />
データの送信にもこだわって、Ajaxにしてみた。<br />
今回は、Google Maps API のXMLHttpを利用した。<br />
もちろん、自前のAjaxエンジンとかあればそちらでも構わない。</p>
<p>新潟マップでも送信をAjaxで実行しようとしていたので、<br />
敵に塩を送ることになるが、<b class="red">送信部分のみ</b>をさらしてみる。</p>
<p><textarea id="code" rows="10"  cols="55"><br />
function form_Submit(){<br />
var data = new String();<br />
for( var i = 0 ; i < document.frm.elements.length ; i++ ){<br />
if( !document.frm.elements[i].disabled ){<br />
data += "&#038;";<br />
data += document.frm.elements[i].name;<br />
data += "=";<br />
data += document.frm.elements[i].value;<br />
}<br />
}<br />
if( data.length > 0 ){<br />
data = data.substring(1);<br />
} else{<br />
window.alert(&#8220;POSTするデータがありません。&#8221;)<br />
return false;<br />
}<br />
var request = GXmlHttp.create();<br />
if (request) {<br />
request.onreadystatechange = function() {<br />
if (request.readyState == 4 &#038;&#038; request.status == 200) {<br />
}<br />
}<br />
request.open(&#8220;POST&#8221;, &#8220;xxx.cgi?mode=xxx&#8221;, true);<br />
request.setRequestHeader(&#8220;Content-Type&#8221; , &#8220;application/x-www-form-urlencoded&#8221;);<br />
request.send(data);<br />
}<br />
}<br />
</textarea></p>
<p>Form の名前は frm としてます。自分のサイトに合わせて変えてくださいね。</p>
<p>まず、フォームfrmの内容から送信する文字列を作成します。<br />
別に違う方法でも良いけど、まぁ参考までに。<br />
この時に、入力チェックをしておくのも良い。<br />
ちなみに、広島っぷではここに来る前に入力チェックは済ませています。</p>
<div id="source">var&nbsp;data&nbsp;=&nbsp;new&nbsp;String();<br />
for(&nbsp;var&nbsp;i&nbsp;=&nbsp;0&nbsp;;&nbsp;i&nbsp;<&nbsp;document.frm.elements.length&nbsp;;&nbsp;i++&nbsp;){<br />
&nbsp;&nbsp;if(&nbsp;!document.frm.elements[i].disabled&nbsp;){<br />
&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;+=&nbsp;&#8221;&#038;&#8221;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;+=&nbsp;document.frm.elements[i].name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;+=&nbsp;&#8221;=&#8221;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;+=&nbsp;document.frm.elements[i].value;<br />
&nbsp;&nbsp;}<br />
}<br />
if(&nbsp;data.length&nbsp;>&nbsp;0&nbsp;){<br />
&nbsp;&nbsp;data&nbsp;=&nbsp;data.substring(1);<br />
}&nbsp;else{<br />
&nbsp;&nbsp;window.alert(&#8220;POSTするデータがありません。&#8221;)<br />
&nbsp;&nbsp;return&nbsp;false;<br />
}
</div>
<p>
次に、&#8221;XMLHttpRequest&#8221;を使えるようにします。</p>
<div id="source"><b class="red">var request = GXmlHttp.create();</b></div>
<p>
その後、いつものように実行するのですが、</p>
<div id="source">request.open(&#8220;POST&#8221;,&nbsp;&#8221;xxx.cgi?mode=xxx&#8221;,&nbsp;true);</div>
<p>のように、&#8221;<b class="red">POST</b>&#8220;にしておきます。<br />
上記のように、&#8221;<b class="red">xxx.cgi?mode=xxx</b>&#8220;のようにしておくと、<br />
&#8220;<b class="red">mode</b>&#8220;の値は&#8221;<b class="red">Get</b>&#8220;データとして受け取れます。</p>
<p>次に、</p>
<div id="source"><b class="red">request.setRequestHeader(&#8220;Content-Type&#8221;&nbsp;,&nbsp;&#8221;application/x-www-form-urlencoded&#8221;);</b></div>
<p>と記述しておかないと、動かないブラウザがあるようです。<br />
なので、必須かもね。</p>
<div id="source">request.send(<b class="red">data</b>);</div>
<p>で、最初に作成した文字列データを送信します。<br />
データの内容は&#8221;<b class="red">POST</b>&#8220;データで受け取れます。</p>
<p>送信後、なんらかのデータが返ってきて、それを表示する場合には、</p>
<div id="source">if&nbsp;(request)&nbsp;{<br />
&nbsp;&nbsp;request.onreadystatechange&nbsp;=&nbsp;function()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.readyState&nbsp;==&nbsp;4&nbsp;&#038;&&nbsp;request.status&nbsp;==&nbsp;200)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b class="red">var&nbsp;xmlDoc&nbsp;=&nbsp;request.responseXML;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以下略</b><br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;request.open(&#8220;POST&#8221;,&nbsp;&#8221;xxx.cgi?mode=xxx&#8221;,&nbsp;true);<br />
&nbsp;&nbsp;request.setRequestHeader(&#8220;Content-Type&#8221;&nbsp;,&nbsp;&#8221;application/x-www-form-urlencoded&#8221;);<br />
&nbsp;&nbsp;request.send(data);<br />
}
</div>
<p>とかやっても良いですよ。</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0824-101700.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ajaxで出来ないこと（１）</title>
		<link>http://ponpon-village.net/blog/archives/2005/0823-161054.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0823-161054.html#comments</comments>
		<pubDate>Tue, 23 Aug 2005 07:10:54 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/ajax_1.html</guid>
		<description><![CDATA[Ajaxって、万能ではないんですよねぇ。 ブラウザで動作が異なることもあるし（「 &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0823-161054.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ajaxって、万能ではないんですよねぇ。<br />
ブラウザで動作が異なることもあるし（「<a href="http://ponpon-village.net/blog/archives/2005/0817-2251.php" target="_blank" title="IEとFireFoxの違い（１）">IEとFireFoxの違い（１）</a>」）<br />
さらに、もっと致命的（？）な弱点もあるんですよ～</p>
<p><span id="more-50"></span><br />
それはなにかっていうと、<br />
<b class="red">Ajaxで読み込んだページ内のJavaScriptは動かない場合がある</b>ってこと。<br />
ちょっと説明し難いのですが、<br />
Ajaxで読み込んだページ内に、<br />
例えば「ボタンを押したら動作する」とかとは違って、<br />
読み込んだら動作するようなJavaScriptを記述していても、<br />
動かないのです。<br />
これはIE、Firefox共に動きませんでした。<br />
ちなみに、昨日はテストしていないのでうろ覚えですが、<br />
「ボタンを押したら動作する」などのイベントに起因するものは動いた・・・と思います。<br />
では、どうすればいいのかなぁ～と思うのだけど、<br />
Ajaxで読み込んだページを表示する前か表示した後に、<br />
必要な処理をむりやり実行すればいいのでは？としか思いつかなかった。<br />
例えば、その処理をfunctionとかにしておいて、<br />
読み込んだページの表示直後に呼び出すとかね。<br />
読み込んだページ内で実行されなくなるのなら、<br />
親画面（Ajaxで読み込んだページを表示させる画面）に全てのJavaScriptを用意しておき、<br />
子画面（Ajaxで読み込むページ）はデザインだけにしておくのが良いのかもしれないですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0823-161054.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IEとFireFoxの違い（１）</title>
		<link>http://ponpon-village.net/blog/archives/2005/0817-225156.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0817-225156.html#comments</comments>
		<pubDate>Wed, 17 Aug 2005 13:51:56 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/iefirefox.html</guid>
		<description><![CDATA[盆連休は、インターネットの出来ない実家に帰省していました。 Ajaxを用いた掲示 &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0817-225156.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>盆連休は、インターネットの出来ない実家に帰省していました。<br />
Ajaxを用いた掲示板を作って、みんなにダウンロードしてもらおうとか<br />
いろいろ考えていたのに、なにも出来ず・・・<br />
で、なにかネタがないものかなぁ～と思っていたときに、ふと思い出したので、<br />
IEとFireFoxでのAjaxの挙動の違いについて紹介することにした。</p>
<p><span id="more-44"></span><br />
IEとFireFoxでは、JavaScriptが、<br />
一方では動き、もう一方では動かなかったりという<br />
JavaScriptの違いがあるが、それ以外にも違うことがあるのだ～！<br />
AjaxであるHTMLを読み込んだ時、<br />
その読み込んだHTML内でスタイルシートを宣言していた場合。<br />
つまり、HTML内で、<br />
&lt;STYLE TYPE=&#8221;text/css&#8221;&gt;<br />
H1 { color: red; }<br />
&lt;/STYLE&gt;<br />
などと記述していた場合、または、<br />
&lt;LINK REL=&#8221;stylesheet&#8221; TYPE=&#8221;text/css&#8221; HREF=&#8221;../css/xxx.css&#8221; /&gt;<br />
と記述していた場合に、<br />
<b class="red">IEの場合は、スタイルシートが反映されないが、<br />
FireFoxでは、スタイルシートが反映されていた！</b><br />
という違いがあった。<br />
詳しく実験してはいないので、あまり自信満々に言い切れないのだが・・・<br />
で、対応はというと、<br />
読み込んだHTMLを表示するページ、まぁ要するに親ページに<br />
&lt;LINK REL=&#8221;stylesheet&#8221; TYPE=&#8221;text/css&#8221; HREF=&#8221;../css/xxx.css&#8221; /&gt;<br />
と記述しておくか、もしくは、読み込むHTMLのスタイルシート適用箇所に<br />
直接記述しておけば良い。<br />
つまり、上の例で言うと、読み込むHTMLのH1を、<br />
&lt;H1 style=&#8221;color: red;&#8221;&gt;<br />
というようにしておけばいい。<br />
が、これだと全ての箇所に記述しないといけないので、少々面倒になるけどね。<br />
ということで、今回の教訓。<br />
<b class="red">IEでAjaxを使う時は、スタイルシートに気をつけろ！</b></p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0817-225156.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>掲示板Ajax化</title>
		<link>http://ponpon-village.net/blog/archives/2005/0805-095237.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0805-095237.html#comments</comments>
		<pubDate>Fri, 05 Aug 2005 00:52:37 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/ajax.html</guid>
		<description><![CDATA[ふと、掲示板をAjax化させるとどうなるのかと思った。 うちの掲示板（BBS)は &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0805-095237.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>ふと、掲示板をAjax化させるとどうなるのかと思った。<br />
<a href="http://ponpon-village.net" target="_blank" title="ponpon-village.net">うち</a>の掲示板（BBS)は、<a href="http://lolipop.jp/" target="_blank" title="ロリポップ">ロリポップ</a>（私がレンタルしているサーバ）の<br />
<a href="http://perori.lolipop.jp/" target="_blank" title="">ホムペロリ</a>（ペロリとホームページが出来る機能）を利用して自動作成されたものだ。<br />
残念ながら、未だカキコ無し・・・</p>
<p><span id="more-43"></span><br />
特に注目する要素も無いからなのだろうが、やっぱ寂しい。<br />
なにか注目させるような要素があれば・・・<br />
といっても、私にはAjaxしかない・・・<br />
ん？掲示板をAjax化するとどうなるのかな？<br />
というわけで、Ajax化してみた。<br />
Ajax化して思ったのは、なんだかキモチイイ！ってことだった。<br />
画面の再読み込みとかもなく、書き込み内容がスルッと追加される感じ。<br />
書き込み後にブラウザのリロードボタンを押しても、再送されることもない。<br />
既存の掲示板を改良するのは少々面倒だったので、<br />
最初からAjaxを考えて作るのも良いかもしれないと思った。<br />
もしかしたら、すでにAjax版の掲示板があるかもしれないね。</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0805-095237.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>広島っぷ</title>
		<link>http://ponpon-village.net/blog/archives/2005/0802-143029.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0802-143029.html#comments</comments>
		<pubDate>Tue, 02 Aug 2005 05:30:29 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/post_18.html</guid>
		<description><![CDATA[なんとなく、作ってみました。 広島っぷ ネーミングセンスゼロですね・・・ 広島の &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0802-143029.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>なんとなく、作ってみました。<br />
<a href="http://ponpon-village.net/maps/hiroshimaps.htm" target="_blank" title="広島っぷ">広島っぷ</a><br />
ネーミングセンスゼロですね・・・</p>
<p><span id="more-40"></span><br />
広島の、美味しい食事や楽しい食事の出来るところ等を紹介したいなと思ったので。<br />
<a href="http://local.google.co.jp/" target="_blank" title="Googleローカル">Googleローカル</a>でもいいじゃん！って思うかもしれないけど、<br />
Googleローカルはよく見ると位置がちょっと違っていたりしてますし。<br />
それに、マーカークリックでお店へのコメントも表示させて差別化してます。<br />
ちゃんと体験した上でのコメントなわけですし。<br />
そして、料理が不味い、雰囲気悪いと思ったお店は紹介しません。<br />
そのうち、お店や料理のサムネイルも表示させようかなと思ってます。<br />
すでにいくつか撮ってきました。<br />
もちろん、店長にサイトへの公開の許可を貰ってます。<br />
Googleのパワーはたしかにすごいけど、<br />
お店の写真とかまでは無理っぽいでしょ？<br />
地方のことは地方の人にまかせなさいっ。<br />
登録型にしても面白いかなぁ～とか、<br />
観光スポットの紹介も面白いかなぁ～などと考えています。</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0802-143029.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajaxslt実装３</title>
		<link>http://ponpon-village.net/blog/archives/2005/0711-125531.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0711-125531.html#comments</comments>
		<pubDate>Mon, 11 Jul 2005 03:55:31 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/ajaxslt_2.html</guid>
		<description><![CDATA[今回の方法は、XMLファイルのみならず、 XSLTファイルも XMLHttpRe &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0711-125531.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今回の方法は、XMLファイルのみならず、<br />
XSLTファイルも XMLHttpRequest で取ってくる方法です。</p>
<p>今回も、前回と同様に、<br />
XMLファイル以外に、XSLTファイルもあらかじめ用意しておき、<br />
JavaScript内でXSLTをロードしてXMLをトランスフォーム（変換）します。</p>
<p>XML、XSLTは前回と同じものを使用します。</p>
<p><span id="more-30"></span><br />
読み込み処理を行うページは下記のようにし、<br />
ファイル名は「sample003.htm」とした。</p>
<p>
<textarea id="code" rows="10"  cols="55"><br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=utf-8&#8243;&gt;<br />
&lt;META http-equiv=&#8221;Content-Style-Type&#8221; content=&#8221;text/css&#8221;&gt;<br />
&lt;META http-equiv=Content-Script-Type content=text/javascript&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;sample003&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;!&#8211;ココにXSL適用出力が入る&#8211;&gt;<br />
&lt;div ID=&#8221;disp&#8221;&gt;&lt;/div&gt;<br />
&lt;!&#8211;ココにXSL適用出力が入る&#8211;&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
&lt;!&#8211;<br />
function createXmlhttp() {<br />
var xmlhttp = false;<br />
try {<br />
//IE<br />
xmlhttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
} catch (e) {<br />
xmlhttp = false;<br />
}<br />
if (!xmlhttp &#038;&#038; typeof XMLHttpRequest!=&#8217;undefined&#8217;) {<br />
//Firefox<br />
xmlhttp = new XMLHttpRequest();<br />
}<br />
return xmlhttp;<br />
}<br />
function sample003() {<br />
var xmlhttp = new createXmlhttp();<br />
var xmlhttp2 = new createXmlhttp();<br />
var oSource;<br />
var oStyle;<br />
var disp = document.getElementById(&#8216;disp&#8217;);<br />
if (xmlhttp) {<br />
xmlhttp.open(&#8216;GET&#8217;, &#8216;sample001.xml&#8217;);<br />
xmlhttp.onreadystatechange = function() {<br />
if (xmlhttp.readyState == 4 &#038;&#038; xmlhttp.status == 200) {<br />
oSource = xmlhttp.responseXML;<br />
}<br />
}<br />
xmlhttp.send(null);<br />
}<br />
if (xmlhttp2) {<br />
xmlhttp2.open(&#8216;GET&#8217;, &#8216;./sample002.xsl&#8217;);<br />
xmlhttp2.onreadystatechange = function() {<br />
if (xmlhttp2.readyState == 4 &#038;&#038; xmlhttp2.status == 200) {<br />
oStyle = xmlhttp2.responseXML;<br />
var u = new Ajaxslt(oStyle);<br />
u.transformToHTML(oSource, disp);<br />
}<br />
}<br />
xmlhttp2.send(null);<br />
}<br />
}<br />
function Ajaxslt(a){<br />
this.stylesheet = a;<br />
}<br />
Ajaxslt.prototype.transformToHTML=function(a, b){<br />
if(typeof a.transformNode != &#8220;undefined&#8221;){<br />
//IE<br />
b.innerHTML = a.transformNode(this.stylesheet);<br />
}else if(typeof XSLTProcessor != &#8220;undefined&#8221; &#038;&#038; typeof XSLTProcessor.prototype.importStylesheet != &#8220;undefined&#8221;){<br />
//Firefox<br />
var c = new XSLTProcessor();<br />
c.importStylesheet(this.stylesheet);<br />
var d = c.transformToFragment(a, window.document);<br />
b.innerHTML = &#8220;&#8221;;<br />
b.appendChild(d);<br />
}<br />
}<br />
&#8211;&gt;<br />
&lt;/script&gt;<br />
&lt;button onclick=&#8221;sample003()&#8221;&gt;test&lt;/button&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</textarea></p>
<p>
今回は、XMLを XMLHttpRequest で読み込んだ後に、<br />
さらにXSLTも XMLHttpRequest で読み込んでいます。<br />
読み込んだ時点で、XMLファイルとなっているので、<br />
前回あったXSLTファイル読み込めるようにする処理<br />
IE</p>
<div id="source">var b = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);</div>
<p>Firefox</p>
<div id="source">var b =  document.implementation.createDocument(&#8220;&#8221;, &#8220;&#8221;, null);
</div>
<p>が不要になりました。</p>
<p>後は、今までどおり、<br />
transformToHTML関数内で、<br />
IEはtransformNode、<br />
FirefoxはtransformToFragmentで<br />
XMLにXSLTを適用し、その結果を出力しています。</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0711-125531.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajaxslt実装２</title>
		<link>http://ponpon-village.net/blog/archives/2005/0709-185118.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0709-185118.html#comments</comments>
		<pubDate>Sat, 09 Jul 2005 09:51:18 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/2.html</guid>
		<description><![CDATA[今回は、もっと一般的な方法を紹介します。 今回は、XMLファイル以外に、XSLT &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0709-185118.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今回は、もっと一般的な方法を紹介します。</p>
<p>今回は、XMLファイル以外に、XSLTファイルもあらかじめ用意しておき、<br />
JavaScript内でXSLTをロードしてXMLをトランスフォーム（変換）します。</p>
<p><span id="more-29"></span><br />
XMLは前回と同じものを使用します。</p>
<p>用意したXSLTはこんなかんじ。ファイル名は「sample002.xsl」とした。</p>
<p>
<textarea id="code" rows="10"  cols="55"><br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;xsl:stylesheet xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221; version=&#8221;1.0&#8243;&gt;<br />
&lt;xsl:variable name=&#8221;key&#8221;&gt;ASP&lt;/xsl:variable&gt;<br />
&lt;xsl:output method=&#8221;html&#8221; encoding=&#8221;utf-8&#8243;/&gt;<br />
&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;table border=&#8221;1&#8243; align=&#8221;center&#8221; cellpadding=&#8221;2&#8243; cellspacing=&#8221;0&#8243; width=&#8221;500&#8243;&gt;<br />
&lt;caption&gt;&lt;b&gt;選手一覧&lt;/b&gt;&lt;/caption&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;氏名&lt;/th&gt;<br />
&lt;th&gt;守備&lt;/th&gt;<br />
&lt;th&gt;チーム&lt;/th&gt;<br />
&lt;/tr&gt;<br />
&lt;xsl:apply-templates/&gt;<br />
&lt;/table&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;xsl:template match=&#8221;大リーグ&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;選手&#8221;/&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;xsl:template match=&#8221;選手&#8221;&gt;<br />
&lt;tr align=&#8221;center&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;氏名&#8221;/&gt;<br />
&lt;xsl:apply-templates select=&#8221;守備&#8221;/&gt;<br />
&lt;xsl:apply-templates select=&#8221;チーム&#8221;/&gt;<br />
&lt;/tr&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;xsl:template match=&#8221;氏名&#8221;&gt;<br />
&lt;td align=&#8221;center&#8221;&gt;<br />
&lt;b&gt;<br />
&lt;xsl:value-of select=&#8221;姓&#8221;/&gt;<br />
&lt;xsl:value-of select=&#8221;名&#8221;/&gt;<br />
&lt;/b&gt;<br />
&lt;/td&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;xsl:template match=&#8221; 守備 | チーム &#8220;&gt;<br />
&lt;td&gt;&lt;b&gt;&lt;xsl:value-of select=&#8221;.&#8221;/&gt;&lt;/b&gt;&lt;br/&gt;&lt;/td&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;<br />
</textarea></p>
<p>
読み込み処理を行うページは下記のようにし、<br />
ファイル名は「sample002.htm」とした。</p>
<p>
<textarea id="code" rows="10"  cols="55"><br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=utf-8&#8243;&gt;<br />
&lt;META http-equiv=&#8221;Content-Style-Type&#8221; content=&#8221;text/css&#8221;&gt;<br />
&lt;META http-equiv=Content-Script-Type content=text/javascript&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;sample002&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;!&#8211;ココにXSL適用出力が入る&#8211;&gt;<br />
&lt;div ID=&#8221;disp&#8221;&gt;&lt;/div&gt;<br />
&lt;!&#8211;ココにXSL適用出力が入る&#8211;&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
&lt;!&#8211;<br />
function createXmlhttp() {<br />
var xmlhttp = false;<br />
try {<br />
//IE<br />
xmlhttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
} catch (e) {<br />
xmlhttp = false;<br />
}<br />
if (!xmlhttp &#038;&#038; typeof XMLHttpRequest!=&#8217;undefined&#8217;) {<br />
//Firefox<br />
xmlhttp = new XMLHttpRequest();<br />
}<br />
return xmlhttp;<br />
}<br />
function sample002() {<br />
var xmlhttp = new createXmlhttp();<br />
var oSource;<br />
var oStyle;<br />
var disp = document.getElementById(&#8216;disp&#8217;);<br />
if (xmlhttp) {<br />
xmlhttp.open(&#8216;GET&#8217;, &#8216;sample001.xml&#8217;);<br />
xmlhttp.onreadystatechange = function() {<br />
if (xmlhttp.readyState == 4 &#038;&#038; xmlhttp.status == 200) {<br />
oSource = xmlhttp.responseXML;<br />
var oStyle = loadXslt(&#8220;sample002.xsl&#8221;);<br />
var u = new Ajaxslt(oStyle);<br />
u.transformToHTML(oSource, disp);<br />
}<br />
}<br />
xmlhttp.send(null);<br />
}<br />
}<br />
function loadXslt(a){<br />
try{<br />
if(typeof ActiveXObject != &#8220;undefined&#8221; &#038;&#038; typeof GetObject != &#8220;undefined&#8221;){<br />
//IE<br />
var b = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);<br />
b.async = false;<br />
b.load(a);<br />
return b;<br />
}else if(typeof XSLTProcessor != &#8220;undefined&#8221; &#038;&#038; typeof XSLTProcessor.prototype.importStylesheet != &#8220;undefined&#8221;){<br />
//Firefox<br />
var b =  document.implementation.createDocument(&#8220;&#8221;, &#8220;&#8221;, null);<br />
b.async = false;<br />
b.load(a);<br />
return b;<br />
}<br />
}catch(c){<br />
}<br />
}<br />
function Ajaxslt(a){<br />
this.stylesheet = a;<br />
}<br />
Ajaxslt.prototype.transformToHTML=function(a, b){<br />
if(typeof a.transformNode != &#8220;undefined&#8221;){<br />
//IE<br />
b.innerHTML = a.transformNode(this.stylesheet);<br />
}else if(typeof XSLTProcessor != &#8220;undefined&#8221; &#038;&#038; typeof XSLTProcessor.prototype.importStylesheet != &#8220;undefined&#8221;){<br />
//Firefox<br />
var c = new XSLTProcessor();<br />
c.importStylesheet(this.stylesheet);<br />
var d = c.transformToFragment(a, window.document);<br />
b.innerHTML = &#8220;&#8221;;<br />
b.appendChild(d);<br />
}<br />
}<br />
&#8211;&gt;<br />
&lt;/script&gt;<br />
&lt;button onclick=&#8221;sample002()&#8221;&gt;実行&lt;/button&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</textarea></p>
<p>
今回は、中盤付近にある</p>
<div id="source">var p = loadXslt(&#8220;sample002.xsl&#8221;);</div>
<p>で、XSLTファイルを指定している。<br />
ファイルパスは各自の環境にあわせて、変更してください。</p>
<p>loadXslt関数内で、各ブラウザ用の方法でXSLTを読み込んでいます。</p>
<p>読み込んだ後は、前回と同じ方法でトランスフォームしています。<br />
つまり<br />
transformToHTML関数内で、<br />
IEはtransformNode、<br />
FirefoxはtransformToFragmentで<br />
XMLにXSLTを適用し、その結果を出力しています。</p>
<p>IEでは、</p>
<div id="source">var b = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);</div>
<p>で、<br />
Firefoxでは、</p>
<div id="source">var b =  document.implementation.createDocument(&#8220;&#8221;, &#8220;&#8221;, null);
</div>
<p>で、XSLTファイルを読み込めるようにしています。<br />
これをやっておかないと、ロード（load）が出来ないんです。</p>
<p>これと似たような方法がもうひとつあるので、次回紹介します。</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0709-185118.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajaxslt実装１</title>
		<link>http://ponpon-village.net/blog/archives/2005/0707-002026.html</link>
		<comments>http://ponpon-village.net/blog/archives/2005/0707-002026.html#comments</comments>
		<pubDate>Wed, 06 Jul 2005 15:20:26 +0000</pubDate>
		<dc:creator>daikisan</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://ponpon-village.net/wordpress/archives/2005/ajaxslt_1.html</guid>
		<description><![CDATA[Googleが公開していたAjaxsltのサンプルに触発され、 Ajaxsltに &#8230; <a href="http://ponpon-village.net/blog/archives/2005/0707-002026.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Googleが公開していたAjaxsltのサンプルに触発され、<br />
Ajaxsltについて調査してみた。</p>
<p>が、Googleのサンプルだけでは、<br />
いくつかの必要なソースが無いこともあり、理解するのが困難だったので、<br />
まずは、Ajaxsltを使用していると言われている Google Maps を解析してみた。</p>
<p><span id="more-26"></span><br />
その結果、いくつかわかったことがあるので、公開してみる。</p>
<p>１．XMLファイルをXSLTファイルでトランスフォームする</p>
<p>トランスフォームってのは、XMLファイルにXSLTを<br />
適用するっていう意味だと思えばいいかな。<br />
トランスフォームすることで、XSLTを適用した状態のXMLを出力出来る。</p>
<p>
２．IE と Mozilla/Firefox で異なった記述をしなければならない</p>
<p>XMLHｔｔｐRequest でも異なる記述が必要だったが、<br />
ここでもやはり必要となってきた。<br />
クロスブラウザって難しいね。</p>
<p>
３．XSLTの生成方法がいくつかある</p>
<ul>
<li>JavaScriptの中に、テキストとしてゴリゴリと書いておく</li>
<li>あらかじめ用意しておいたXSLTファイルを読み込む</li>
<li>Google のサンプルでは、JavaScriptのコード中で生成しているようだ</li>
</ul>
<p>残念ながら、Google のサンプルは、全てのファイルが容易されていない為、<br />
現時点では説明出来ない。</p>
<p>というわけで、まずは、他の２種類の方法を説明する。</p>
<p>今回は、私が編み出した（といっても別にすごくもなんともなく、<br />
ただ単にどこにもサンプルがなかっただけの）方法である、<br />
「JavaScriptの中に、テキストとしてゴリゴリと書いておく」を説明する。</p>
<p>用意したXMLはこんなかんじ。ファイル名は「sample001.xml」とした。</p>
<p>
<textarea id="code" rows="10"  cols="55"><br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;大リーグ&gt;<br />
&lt;選手 no=&#8221;51&#8243;&gt;<br />
&lt;氏名&gt;<br />
&lt;姓&gt;鈴本&lt;/姓&gt;<br />
&lt;名&gt;タクロー&lt;/名&gt;<br />
&lt;/氏名&gt;<br />
&lt;守備&gt;ライト&lt;/守備&gt;<br />
&lt;チーム 本拠地=&#8221;シアトル&#8221;&gt;マリナーズ&lt;/チーム&gt;<br />
&lt;/選手&gt;<br />
&lt;選手 no=&#8221;5&#8243;&gt;<br />
&lt;氏名&gt;<br />
&lt;姓&gt;本庄&lt;/姓&gt;<br />
&lt;名&gt;武志&lt;/名&gt;<br />
&lt;/氏名&gt;<br />
&lt;守備&gt;センター&lt;/守備&gt;<br />
&lt;チーム 本拠地=&#8221;ニューヨーク&#8221;&gt;メッツ&lt;/チーム&gt;<br />
&lt;/選手&gt;<br />
&lt;選手 no=&#8221;55&#8243;&gt;<br />
&lt;氏名&gt;<br />
&lt;姓&gt;松田&lt;/姓&gt;<br />
&lt;名&gt;モジラ&lt;/名&gt;<br />
&lt;/氏名&gt;<br />
&lt;守備&gt;レフト&lt;/守備&gt;<br />
&lt;チーム 本拠地=&#8221;ニューヨーク&#8221;&gt;ヤンキース&lt;/チーム&gt;<br />
&lt;/選手&gt;<br />
&lt;/大リーグ&gt;<br />
</textarea></p>
<p>
読み込み処理を行うページは下記のようにし、<br />
ファイル名は「sample001.htm」とした。</p>
<p>
<textarea id="code" rows="10"  cols="55"><br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=utf-8&#8243;&gt;<br />
&lt;META http-equiv=&#8221;Content-Style-Type&#8221; content=&#8221;text/css&#8221;&gt;<br />
&lt;META http-equiv=Content-Script-Type content=text/javascript&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;sample001&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;!&#8211;ココにXSL適用出力が入る&#8211;&gt;<br />
&lt;div ID=&#8221;disp&#8221;&gt;&lt;/div&gt;<br />
&lt;!&#8211;ココにXSL適用出力が入る&#8211;&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
&lt;!&#8211;<br />
function createXmlhttp() {<br />
var xmlhttp = false;<br />
try {<br />
//IE<br />
xmlhttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
} catch (e) {<br />
xmlhttp = false;<br />
}<br />
if (!xmlhttp &#038;&#038; typeof XMLHttpRequest!=&#8217;undefined&#8217;) {<br />
//Firefox<br />
xmlhttp = new XMLHttpRequest();<br />
}<br />
return xmlhttp;<br />
}<br />
function sample001() {<br />
var xmlhttp = new createXmlhttp();<br />
var oSource;<br />
var oStyle;<br />
var disp = document.getElementById(&#8216;disp&#8217;);<br />
if (xmlhttp) {<br />
xmlhttp.open(&#8216;GET&#8217;, &#8216;sample001.xml&#8217;);<br />
xmlhttp.onreadystatechange = function() {<br />
if (xmlhttp.readyState == 4 &#038;&#038; xmlhttp.status == 200) {<br />
oSource = xmlhttp.responseXML;<br />
var a = &#8216;&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;&#8217;;<br />
a += &#8216;&lt;xsl:stylesheet xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221; version=&#8221;1.0&#8243;&gt;&#8217;;<br />
a += &#8216;&lt;xsl:output method=&#8221;html&#8221; encoding=&#8221;utf-8&#8243;/&gt;&#8217;;<br />
a += &#8216;&lt;xsl:template match=&#8221;/&#8221;&gt;&#8217;;<br />
a += &#8216;&lt;table border=&#8221;1&#8243; align=&#8221;center&#8221; cellpadding=&#8221;2&#8243; cellspacing=&#8221;0&#8243; width=&#8221;500&#8243;&gt;&#8217;;<br />
a += &#8216;&lt;caption&gt;&lt;b&gt;選手一覧&lt;/b&gt;&lt;/caption&gt;&#8217;;<br />
a += &#8216;&lt;tr&gt;&lt;th&gt;氏名&lt;/th&gt;&lt;th&gt;守備&lt;/th&gt;&lt;th&gt;チーム&lt;/th&gt;&lt;/tr&gt;&#8217;;<br />
a += &#8216;&lt;xsl:apply-templates/&gt;&lt;/table&gt;&lt;/xsl:template&gt;&#8217;;<br />
a += &#8216;&lt;xsl:template match=&#8221;大リーグ&#8221;&gt;&lt;xsl:apply-templates select=&#8221;選手&#8221;/&gt;&lt;/xsl:template&gt;&#8217;;<br />
a += &#8216;&lt;xsl:template match=&#8221;選手&#8221;&gt;&lt;tr align=&#8221;center&#8221;&gt;&#8217;;<br />
a += &#8216;&lt;xsl:apply-templates select=&#8221;氏名&#8221;/&gt;&lt;xsl:apply-templates select=&#8221;守備&#8221;/&gt;&#8217;;<br />
a += &#8216;&lt;xsl:apply-templates select=&#8221;チーム&#8221;/&gt;&lt;/tr&gt;&lt;/xsl:template&gt;&#8217;;<br />
a += &#8216;&lt;xsl:template match=&#8221;氏名&#8221;&gt;&lt;td align=&#8221;center&#8221;&gt;&lt;b&gt;&#8217;;<br />
a += &#8216;&lt;xsl:value-of select=&#8221;姓&#8221;/&gt;&lt;xsl:value-of select=&#8221;名&#8221;/&gt;&lt;/b&gt;&lt;/td&gt;&#8217;;<br />
a += &#8216;&lt;/xsl:template&gt;&lt;xsl:template match=&#8221; 守備 | チーム &#8220;&gt;&lt;td&gt;&lt;b&gt;&#8217;;<br />
a += &#8216;&lt;xsl:value-of select=&#8221;.&#8221;/&gt;&lt;/b&gt;&lt;br/&gt;&lt;/td&gt;&lt;/xsl:template&gt;&lt;/xsl:stylesheet&gt;&#8217;;<br />
var p = createParser(a);<br />
var u = new Ajaxslt(p);<br />
u.transformToHTML(oSource, disp);<br />
}<br />
}<br />
xmlhttp.send(null);<br />
}<br />
}<br />
function createParser(a){<br />
try{<br />
if(typeof ActiveXObject != &#8220;undefined&#8221; &#038;&#038; typeof GetObject != &#8220;undefined&#8221;){<br />
//IE<br />
var b = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);<br />
b.loadXML(a);<br />
return b;<br />
}else if(typeof DOMParser != &#8220;undefined&#8221;){<br />
//Firefox<br />
return(new DOMParser()).parseFromString(a, &#8220;text/xml&#8221;);<br />
}<br />
}catch(c){<br />
}<br />
}<br />
function Ajaxslt(a){<br />
this.stylesheet = a;<br />
}<br />
Ajaxslt.prototype.transformToHTML=function(a, b){<br />
if(typeof a.transformNode != &#8220;undefined&#8221;){<br />
//IE<br />
b.innerHTML = a.transformNode(this.stylesheet);<br />
}else if(typeof XSLTProcessor != &#8220;undefined&#8221; &#038;&#038; typeof XSLTProcessor.prototype.importStylesheet != &#8220;undefined&#8221;){<br />
//Firefox<br />
var c = new XSLTProcessor();<br />
c.importStylesheet(this.stylesheet);<br />
var d = c.transformToFragment(a, window.document);<br />
b.innerHTML = &#8220;&#8221;;<br />
b.appendChild(d);<br />
}<br />
}<br />
&#8211;&gt;<br />
&lt;/script&gt;<br />
&lt;button onclick=&#8221;sample001()&#8221;&gt;実行&lt;/button&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</textarea></p>
<p>中盤あたりにある「a」という変数に、ゴリゴリと文字列を代入している部分があるが、<br />
その文字列こそXSLTそのものである。</p>
<p>記述した文字列を、XSLTとして扱えるように変換しているのが<br />
createParserという関数での処理である。</p>
<p>その後、transformToHTML関数内で、<br />
IEはtransformNode、<br />
FirefoxはtransformToFragmentで<br />
XMLにXSLTを適用し、その結果を出力しているというわけである。</p>
<p>この方法の良いところは、</p>
<ul>
<li>すでに用意されているXSLTを使用できる（変数に代入すればいいから）</li>
<li>DOMがわからなくても、比較的容易に動的にフィルターを掛けられる</li>
</ul>
<p>ってことしか思いつかん・・・</p>
<p>悪いところは、ソースが冗長になり可読性が低下しやすいところかな。<br />
意外と使いやすいのではないかと思うけど、いかがでしょうか？</p>
]]></content:encoded>
			<wfw:commentRss>http://ponpon-village.net/blog/archives/2005/0707-002026.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
