XHTML出力であった「XSLTで記述したjavascriptをFirefoxで表示する(10)」をHTML出力に変更したが、やはりdocument.write()は使えなかった。
[ソース]
-- script.js --
alert("Javascript Run");
document.write("Javascript works");
alert("Javascript Run2");
--
※赤字の行を追加/削除してテストする。
-- rss.xml --
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="rss.xsl" type="text/xsl"?>
<rss version="2.0">
</rss>
--
-- rss.xsl --
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
version="4.0"
indent="yes"
encoding="UTF-8"
media-type="text/html"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
<xsl:template match="rss">
<html>
<head>
<title>XML+XSL+JAVASCRIPT TEST</title>
</head>
<body>
<h1><font color="red">XML+XSL+JAVASCRIPT TEST</font></h1>
<script type="text/javascript" src="./script.js"></script>
<noscript>
<p>Javascript <strong>does not </strong>work.</p>
</noscript>
<p>Test End</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
--
※太文字を元記事に追加
[XSLT変換後のソース]
※ブラウザの「選択部分のソースを表示」で得た
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title>XML+XSL+JAVASCRIPT TEST</title>
</head>
<body>
<h1><font color="red">XML+XSL+JAVASCRIPT TEST</font></h1>
<script src="./script.js" type="text/javascript"></script>
<noscript>
<p>Javascript <strong>does not </strong>work.</p>
</noscript>
<p>Test End</p>
</body>
</html>
--
※一応HTMLになっているように思える。
[結果]
script.jsのdocument.write("Javascript works");
を抜くと動作するが、
戻すと"Javascript works"を表示した後ルーピングしてしまう。
[考察]
xml+xsltでは、document.write()は使えない。
やりたいことは、「条件にしたがった特定のhtml要素を追加」であるが、その条件がxml+xslt展開時に準備されているなら、javascriptではなくxsltの中で演算をして「特定要素を追加」することができそうである。
キーワード XSLプログラミング、DOM で調べてみる
[ソース]
-- script.js --
alert("Javascript Run");
document.write("Javascript works");
alert("Javascript Run2");
--
※赤字の行を追加/削除してテストする。
-- rss.xml --
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="rss.xsl" type="text/xsl"?>
<rss version="2.0">
</rss>
--
-- rss.xsl --
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
version="4.0"
indent="yes"
encoding="UTF-8"
media-type="text/html"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
<xsl:template match="rss">
<html>
<head>
<title>XML+XSL+JAVASCRIPT TEST</title>
</head>
<body>
<h1><font color="red">XML+XSL+JAVASCRIPT TEST</font></h1>
<script type="text/javascript" src="./script.js"></script>
<noscript>
<p>Javascript <strong>does not </strong>work.</p>
</noscript>
<p>Test End</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
--
※太文字を元記事に追加
[XSLT変換後のソース]
※ブラウザの「選択部分のソースを表示」で得た
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title>XML+XSL+JAVASCRIPT TEST</title>
</head>
<body>
<h1><font color="red">XML+XSL+JAVASCRIPT TEST</font></h1>
<script src="./script.js" type="text/javascript"></script>
<noscript>
<p>Javascript <strong>does not </strong>work.</p>
</noscript>
<p>Test End</p>
</body>
</html>
--
※一応HTMLになっているように思える。
[結果]
script.jsのdocument.write("Javascript works");
を抜くと動作するが、
戻すと"Javascript works"を表示した後ルーピングしてしまう。
[考察]
xml+xsltでは、document.write()は使えない。
やりたいことは、「条件にしたがった特定のhtml要素を追加」であるが、その条件がxml+xslt展開時に準備されているなら、javascriptではなくxsltの中で演算をして「特定要素を追加」することができそうである。
キーワード XSLプログラミング、DOM で調べてみる