• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XSLT)

XSLTファイルの動作が不正な状態となってしまいます

このQ&Aのポイント
  • XSLTファイルを使用している際に、IEではテーブルタグが正常に動作せず、Firefoxでは直接書いてある文字が表示されない問題が発生しています。
  • 特にFirefoxでは「この XML ファイルにはスタイル情報が関連づけられていないようです。以下にドキュメントツリーを表示します。」とのメッセージが表示されます。
  • この問題について、具体的な原因や対処方法についてご教示いただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

すみません 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> を削除する これで大丈夫だと思います。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

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

skykey
質問者

お礼

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

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>document.getElementById('XML').innerHTML = ""; >document.getElementById('XML').appendChild(newDoc); も document.getElementById(resultNodeID).innerHTML = ""; document.getElementById(resultNodeID).appendChild(newDoc); の間違いですね。(; ;)、修正依頼も出したのにorz

skykey
質問者

お礼

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

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

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

skykey
質問者

お礼

欄が無いのでここに。 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> となっております。 拙いものですいません・・・。

skykey
質問者

補足

返信ありがとうございます。ご迷惑をおかけいたします。 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> で終わります。