プロが教えるわが家の防犯対策術!

こんにちは xml,xsl を今日はじめて使う初心者です。
変数を使おうとして下記のようなメッセージが出てしまいます。
>ここではキーワード xsl:variable を使用できません。
どうすればよろしいでしょう?

area.xls:
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
(中略)
</html>
</xsl:template>

<xsl:template match="変換結果">
<table align="left" border="1" width="1500" cellspacing="0" cellpadding="0">
<tr>
(中略)
</tr>
<tr>
(中略)
<xsl:comment>合計
</xsl:comment>
<th>数量</th>
(中略)
</tr>
<xsl:variable name="coLor" select="white" />
<xsl:for-each select="row" order-by="+column0">
<tr bgcolor="$coLor">

<td width="200" align="right">
<xsl:value-of select="column0" />
</td>
(中略)
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
*************************************************************
area.xml
<?xml version="1.0" encoding="Shift_Jis"?>
<?xml-stylesheet type="text/xsl" href="area.xsl" ?>
<変換結果>
<row row-Num='1'><column0>,4536163880211</column0>
(中略)
</row>
</変換結果>

A 回答 (1件)

わりと陥りやすい問題なので、もうどこかで探して解決しているかもしれませんが一応。



http://www.w3.org/TR/WD-xsl
を使っているところが間違いです。
http://www.w3.org/1999/XSL/Transform
に置き換えて下さい。xsl:variableを使えるようになります。

[以下、経緯を簡単に]
working draftの段階で、Internet Explorerが標準化途中のものを実装したので、そのIE独自版を使いたい場合には"http://www.w3.org/TR/WD-xsl"とします。古い本などを参考にすると、これを使った例しか載っていないかもしれませんね。
最終的な仕様に基づくならば"http://www.w3.org/1999/XSL/Transform"を使わなくてはなりません。今となってはIE独自版を使うメリットはありません。
あと、IEは確かに簡単ですが、怪しげな部分もあるので(偏見?)、これからさらにいろいろ試してみる際には、XTやXalanといった類でも試してみることをお奨めします。

ついでに、何を使っているかを書いた方が回答しやすいですよ。今回のアドバイスも、IE6でないと、少し面倒な作業が必要になります。
    • good
    • 0
この回答へのお礼

ありがとうございます。まさにその通りで
1.http://www.w3.org/TR/WD-xsl
   →http://www.w3.org/1999/XSL/Transform
2.IE5.0(IE5.5) → IE6
3.order-by="+column0" → (なし)

これで一応動きました。
ただ、色が "white" でなく "olive"ですが...

お礼日時:2002/04/04 13:45

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