dポイントプレゼントキャンペーン実施中!

すいません、再び質問があったのですが書く前に締め切ってしまいましたので新しく作らせていただきます。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2093554 …
のNo.4を見て書いてみたのですが、
IE---XSLTファイル内に書いてあるテーブルタグが動作しない、
Firefox---XSLTファイル内に直接書いてある文字が表示されない

という状態になってしまいました。

ちなみにXSLTファイルをFirefoxに放り込むと
「この XML ファイルにはスタイル情報が関連づけられていないようです。以下にドキュメントツリーを表示します。」
と表示されますが何か関係があるのでしょうか・・・?

A 回答 (4件)

すみません


m(_ _)m
前の回答の一部が間違っていました。
function tramsform(xmlFile, xslFile, resultNodeID){
var xml, xslt, newDoc;
if(document.all){
xml = new ActiveXObject("Microsoft.XMLDOM");
xslt = new ActiveXObject("Microsoft.XMLDOM");
} else {
xml = document.implementation.createDocument("", "", null);
xslt = document.implementation.createDocument("", "", null);
}
xml.async = false;
xslt.async = false;
xml.load(xmlFile);
xslt.load(xslFile);

if(document.all){
document.getElementById(resultNodeID).innerHTML = xml.transformNode(xslt);
} else {
var xsltp = new XSLTProcessor();
xsltp.importStylesheet(xslt);
newDoc = xsltp.transformToFragment(xml, window.document);
document.getElementById('XML').innerHTML = "";
document.getElementById('XML').appendChild(newDoc);
}
}
に修正して下さい。
----------------------------------------------------------------
その上で、
XML部分について
<?xml-stylesheet type="text/xsl" href="all.xsl"?>
は、要りません。
----------------------------------------------------------------
XSLT部分について
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>
にする。
<html lang="ja">
<body>

</body>
</html>
を削除する
これで大丈夫だと思います。
    • good
    • 0

#3>エラー「スタイルシートにドキュメント要素が含まれていません。

スタイルシートが空であるか、正しく構成されたXMLドキュメントでない可能性があります」
もしかして
<?xml version="1.0" encoding="shift_jis" ?>
を削除していませんか?
#2の書き方が悪かったですが、これは要ります。
(encoding がUTF-8, UTF-16でない場合には)
    • good
    • 0
この回答へのお礼

できました!!
ご丁寧にありがとうございました。
これからは自分で出来るよう努力していきたいと思います。

お礼日時:2006/04/19 17:39

>document.getElementById('XML').innerHTML = "";


>document.getElementById('XML').appendChild(newDoc);

document.getElementById(resultNodeID).innerHTML = "";
document.getElementById(resultNodeID).appendChild(newDoc);
の間違いですね。(; ;)、修正依頼も出したのにorz
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます!
うまくいきました!!

ただ、
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>
に変更するとIEで
エラー「スタイルシートにドキュメント要素が含まれていません。スタイルシートが空であるか、正しく構成されたXMLドキュメントでない可能性があります」
と出ます。

こちらの文法のエラーかも知れませんが、回答いただけたらありがたいです。

お礼日時:2006/04/18 21:14

XMLとして記述されたファイルと


XSLTとして記述されたファイルを
それぞれ補足することは可能ですか?
補足できないとすると書き方が違うんじゃないかぐらいしか回答できないと思います。
補足された場合でも、すぐには回答はできないかもしれませんけど。
(あるいは、私の能力を超えるようだとできないかもですけど)

この回答への補足

返信ありがとうございます。ご迷惑をおかけいたします。

XMLファイル(data.xml)は
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="all.xsl"?>

<creation>
<game>
<name first="1">aaa</name>
<URL>t.html</URL>
<difficulty>★</difficulty>
<development>5</development>
<genre>??</genre>
<HowToPlay>0</HowToPlay>
<comment>・・・</comment>    
<OS>XP</OS>
</game>
<game>
<name>---</name>
<URL>aaa.html</URL>
<difficulty>☆☆☆</difficulty>
<development>5</development>
<genre>その他</genre>
<HowToPlay>0</HowToPlay>
<comment>com</comment>    
<OS>XP</OS>
</game>
<game>
<name first="1">運試し</name>

と続き、
</game>
</creation>
で終わります。

補足日時:2006/04/17 18:52
    • good
    • 0
この回答へのお礼

欄が無いのでここに。
XSLTファイルは数種類ありますが、メインのall.xslを載せます(名称などは変更しております)。

<?xml version="1.0" encoding="shift_jis" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html lang="ja">
<body>
<table>
<tr>
<th>作品名</th>
<th>難易度</th>
<th>開発</th>
<th>遊び方</th>
<th>コメント</th>
<th>対応OS</th>
</tr>
<xsl:apply-templates select="creation/game" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="game">
<tr>
<td>
<a>
<xsl:attribute name="href">
<xsl:value-of select="URL" />
</xsl:attribute>
<xsl:value-of select="name" />
</a>
</td>
<td align="left">
<xsl:value-of select="difficulty" />
</td>
<xsl:choose>
<xsl:when test="development[. = 5]">
<td>Win</td>
</xsl:when>
<xsl:when test="development[. = 1]">
<td>a</td>
</xsl:when>
<xsl:when test="development[. = 2]">
<td>k</td>
</xsl:when>
<xsl:when test="development[. = 3]">
<td>j</td>
</xsl:when>
<xsl:when test="development[. = 4]">
<td>c</td>
</xsl:when>
</xsl:choose>
<td>
<xsl:if test="HowToPlay[. != string(0)]">
<a>
<xsl:attribute name="href">
<xsl:value-of select="HowToPlay" />
</xsl:attribute>
遊び方
</a>
</xsl:if>
</td>
<td>
<xsl:value-of select="comment" />
</td>
<td>
<xsl:value-of select="OS" />
</td>
</tr>
</xsl:template>
</xsl:stylesheet>

となっております。
拙いものですいません・・・。

お礼日時:2006/04/17 18:59

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