- PR -

2つのXML文書を1つにしたい

1
投稿者投稿内容
ohi
会議室デビュー日: 2001/09/17
投稿数: 2
投稿日時: 2001-09-17 18:26
(ファイルに手を加えず文章を挿入する)
の方でサンプルファイルを作成してテストしたのですが、私のIE6.0
以外、データを全く表示してくれません。

ちなみに、他の人たちはIE5.5です。

この方法はブラウザに依存しているのでしょうか?

念のために、xml、xslをコピーします。

wbt01.xml
<?xml version="1.0" encoding="Shift-JIS"?>
<?xml-stylesheet type="text/xsl" href="wbt01.xsl"?>
<WBT>

<section>
<id>1</id>
<id>2</id>
<id>3</id>
<id>4</id>
<id>5</id>
<id>6</id>
<id>7</id>
<id>8</id>
<id>9</id>
</section>

<text>
<test>文章単元1用演習問題</test>
<detail>Go</detail>
<etsuran>0</etsuran>
<JisshiNinzu>120/150</JisshiNinzu>
<time>30</time>
<jyoukyo>済</jyoukyo>
<gouhi>否</gouhi>
<average>50</average>
<haiten>70/100</haiten>
</text>
<text>
<test>文章単元2用演習問題</test>
<detail>-</detail>
<etsuran>10</etsuran>
<JisshiNinzu>100/100</JisshiNinzu>
<time>60</time>
<jyoukyo>未</jyoukyo>
<gouhi>合</gouhi>
<average>70</average>
<haiten>80/100</haiten>
</text>
</WBT>

list.xml
<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="wbt01.xsl"?>
<objectlist>
  <object id="1">テスト</object>
  <object id="2">詳細</object>
  <object id="3">閲覧回数</object>
  <object id="4">実施人数対象人数</object>
  <object id="5">所要時間</object>
  <object id="6">現在の状況</object>
  <object id="7">合否</object>
  <object id="8">平均点</object>
  <object id="9">点数配点</object>
</objectlist>

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

<!--<?xml version="1.0" encoding="Shift_JIS" ?>-->
<!--<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">-->

<xsl:template match="/">
<html lang="ja">
<head>
<title>study</title>

<style type="text/css">
table{margin-top:10;width:800;}
th{background:KHAKI;}
td{background:BEIGE;}
</style>

<!--<script type="text/JavaScript">-->
<script language="JavaScript">
<xsl:comment>
<![CDATA[
var xmldoc=new ActiveXObject("Microsoft.XMLDom");
xmldoc.async=false;
xmldoc.load("wbt01.xml");
var xmldoc=new ActiveXObject("Microsoft.XMLDom");
xmldoc.async=false;
xmldoc.load("list.xml");
var stylesheet=new ActiveXObject("Microsoft.XMLDom");
stylesheet.async=false;
stylesheet.load("wbt01.xsl");
var sortfield=stylesheet.selectSingleNode("//@order-by");
]]>
</xsl:comment>
</script>
<script language="JavaScript">
<xsl:comment>
<![CDATA[
function mySort(field)
{
sortfield.value=field;
myTable.innerHTML=xmldoc.documentElement.transformNode(stylesheet);
}
]]>
</xsl:comment>
</script>

</head>

<body>

<div id="myTable">
<xsl:apply-templates select="WBT" />
</div>

</body>

</html>
</xsl:template>
<xsl:template match="WBT">

<table border="0" align="center">
<tr align="center">

<xsl:for-each select="section/id">
<td><xsl:value-of select="document('LIST.XML')//object[@id = current()]"/></td>
</xsl:for-each>
</tr>

<xsl:for-each select="text">

<tr align="center">
<td><xsl:value-of select="test" /></td>
<td><xsl:value-of select="detail" /></td>
<td><xsl:value-of select="etsuran" /></td>
<td><xsl:value-of select="JisshiNinzu" /></td>
<td><xsl:value-of select="time" /></td>
<td><xsl:value-of select="jyoukyo" /></td>
<td><xsl:value-of select="gouhi" /></td>
<td><xsl:value-of select="average" /></td>
<td><xsl:value-of select="haiten" /></td>
</tr>

</xsl:for-each>

</table>

</xsl:template>

</xsl:stylesheet>
@IT新野
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 66
投稿日時: 2001-09-18 01:48
ohiさん、こんにちは。@IT新野です。
Ask XML Expertの記事を参考にされたのでしょうか。

まずはできあがったXMLなりHTMLなりを保存して、それがブラウザで
表示されるかどうかを確認されたらいかがでしょうか。
表示できなければ、どこに問題があるかを切り分けていき、
問題のあるところを発生させるようなXSLTの部分を見つけて
いけばいいと思います。

にいの
ohi
会議室デビュー日: 2001/09/17
投稿数: 2
投稿日時: 2001-09-18 09:58
新野さん、返答ありがとうございました。

MicrosoftのXML Parserのバージョンが古いために、
動かなかったことが判明しました。

MSXML 3.0をインストールするとそれぞれの端末で
動くことが確認できました。
バージョンチェックのロジックを持っている方が
よさそうですね。もしくは、もっとXMLを安定して
実現できるXML Parserがあるのでしょうか?

ともあれ、どうもありがとうございました。

[ メッセージ編集済み 編集者: ohi 編集日時 2001-09-18 13:03 ]
@IT新野
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 66
投稿日時: 2001-09-18 12:17
ohiさん、解決されたようでよかったです。たしかにXMLパーサによって挙動が違い
ますからね。XMLパーサについては、いろいろでていますが、MSXML3はそれほど悪い
評判はききません。MSの独自拡張もありますが、いちおう標準規格にはほぼ対応し
ているようです。いつか記事の方でもXMLパーサの比較などをやりたいなあと思って
はいるのですが…
たしか先月号の月刊Javaワールドに、XMLパーサの比較記事が掲載されていたと思う
ので、よろしければチェックしてみてください。

にいの
1

スキルアップ/キャリアアップ(JOB@IT)