

すいません、再び質問があったのですが書く前に締め切ってしまいましたので新しく作らせていただきます。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2093554 …
のNo.4を見て書いてみたのですが、
IE---XSLTファイル内に書いてあるテーブルタグが動作しない、
Firefox---XSLTファイル内に直接書いてある文字が表示されない
という状態になってしまいました。
ちなみにXSLTファイルをFirefoxに放り込むと
「この XML ファイルにはスタイル情報が関連づけられていないようです。以下にドキュメントツリーを表示します。」
と表示されますが何か関係があるのでしょうか・・・?
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>
を削除する
これで大丈夫だと思います。
No.4
- 回答日時:
#3>エラー「スタイルシートにドキュメント要素が含まれていません。
スタイルシートが空であるか、正しく構成されたXMLドキュメントでない可能性があります」もしかして
<?xml version="1.0" encoding="shift_jis" ?>
を削除していませんか?
#2の書き方が悪かったですが、これは要ります。
(encoding がUTF-8, UTF-16でない場合には)
No.3
- 回答日時:
>document.getElementById('XML').innerHTML = "";
>document.getElementById('XML').appendChild(newDoc);
も
document.getElementById(resultNodeID).innerHTML = "";
document.getElementById(resultNodeID).appendChild(newDoc);
の間違いですね。(; ;)、修正依頼も出したのにorz
ご返答ありがとうございます!
うまくいきました!!
ただ、
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>
に変更するとIEで
エラー「スタイルシートにドキュメント要素が含まれていません。スタイルシートが空であるか、正しく構成されたXMLドキュメントでない可能性があります」
と出ます。
こちらの文法のエラーかも知れませんが、回答いただけたらありがたいです。
No.1
- 回答日時:
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>
で終わります。
欄が無いのでここに。
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>
となっております。
拙いものですいません・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xmlファイルが上手にHTMLに変換...
-
XML、XSLTの適応エラー(IEから...
-
XMLを出力する時のエラー原因
-
XMLで要素が記述された順番に意...
-
バッチファイルでテキストファ...
-
CPUの考え方を教えてください ...
-
TreeViewで複数ノードの選択は...
-
ノードとは
-
C#でTreeViewのCheckBoxのサイ...
-
DOSコマンドラインからxmlファ...
-
あるノードリストに、特定の名...
-
特殊記号が勝手にエスケープさ...
-
TreeViewに重複する値をセット
-
ツリービューを閉じさせたくない。
-
複数のxmlファイルの合体
-
複数のXMLファイルからデータを...
-
DataSetのwriteXmlでのXML宣言
-
isnan・isnf関数が「識別子が見...
-
動的な構造体配列の初期化
-
MSXMLで使用可能な文字コードの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
xmlファイルが上手にHTMLに変換...
-
XML、XSLTの適応エラー(IEから...
-
XSLT
-
xmlstarletで他ファイルからエ...
-
XSLTでの正規表現判定
-
不特定ノードに出現する同じタ...
-
xalan でエラーが出るんですが。
-
XMLを出力する時のエラー原因
-
XSLT 文字列を指定した回数分...
-
XSLTでの複数のXML検索結果を統...
-
XSLTの国際化のやり方
-
URLの書き方
-
XSLTでの外部XMLファイルの読み...
-
xhtml2.0をhtmlに変換したい
-
XML+XSLTでの表示について
-
javascriptって
-
XMLを勉強中なのですが・・・
-
CPUの考え方を教えてください ...
-
XMLで要素が記述された順番に意...
-
バッチファイルでテキストファ...
おすすめ情報