重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

MS SQLServerのテーブルに格納されている商品在庫データを、
xmlを使ってWebで見れるようにしております。
が、
ちょっと気になることがあるので質問させてください。

その在庫ページを見るのに、URLを
ttp://○○○○.com/data/templete/getzaiko.xml?contenttype=text/html

のように指定しているのですが、
”?contenttype=text/html”の部分がURLに含まれるのがどうも気に入らないのです。。。
この部分をxmlファイル内に記述することはできないのでしょうか?


以下getzaiko.xmlの内容
------------------------------------
<?xml version ='1.0' encoding='UTF-8'?>
<root xmlns:sql='urn:schemas-microsoft-com:xml-sql'
sql:xsl='sl_zaiko.xsl'>
<sql:header>
<sql:param name="userID">0</sql:param>
<sql:param name="pwd">0</sql:param>
<sql:param name="category">0</sql:param>
<sql:param name="searchword"></sql:param>
</sql:header>
<sql:query>
EXECUTE proc_Zaiko @userID, @pwd, @category, @searchword
</sql:query>
</root>
------------------------------------
※proc_Zaiko はストアドプロシージャです。

A 回答 (3件)

原因についてははっきり特定できます。


HTTPのデフォルトのエンコーディングは"us-ascii"で,XMLやHTMLで表現したエンコーディングルールが無視されるわけです。
XML宣言やHTMLの<meta>でエンコーディングルールを明記すれば,指定したエンコーディングで送信されるように勘違いされる方が多いのですが,優先されるのはHTTPヘッダ情報Content-Typeフィールドの値です。
zutさんがお調べになった限りでは,HTTPヘッダを出力するには,”?contenttype=text/html”をURLに付けないと無理のようですね。
ということで,HTTPヘッダをコントロールしない限りは,スタイルシートをいくら変更してもうまくいきません。
    • good
    • 0
この回答へのお礼

助言ありがとうございました。

お礼日時:2006/02/02 12:50

'

http://www.w3.org/TR/html4/loose.dtd'
に違反するようなHTMLを作っているということですかね~
例えば、xsl:outputを単純にして
<xsl:output method="html" version="4.01" encoding="Shift_JIS" />
とかにしたらどうなりますか

この回答への補足

ご回答ありがとうございます。
<xsl:output method="html" version="4.01" encoding="Shift_JIS" />
にしてみましたところ以下のエラーメッセージが表示されました。


エラーメッセージ
----------------------------
XML ページを表示できません
XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。


──────────────────────────────

テキストの内容に無効な文字が見つかりました。
リソース 'http://○○○○.com/data/templete/getzaiko.xml'の実行エラーです。
ライン 4、位置 8

<title>

----------------------------

<title>が無効???
ちょっと<title>~</title>を消してみますね。

補足日時:2006/01/21 11:52
    • good
    • 0
この回答へのお礼

色々やってみましたが、ダメでした。
やはり”?contenttype=text/html”が無いと、htmlとして解釈しないようです。
HTTPヘッダを出力してやればいいのでしょうが、
SQLServer2000のXML機能だけでやるには、”?contenttype=text/html”をURLに付けないと無理っぽいです。
もうちょっとだけ悩んではみますが…。


<title>~</title>消したときのエラーメッセージ
--------------------------
XML ページを表示できません
XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。
──────────────────────────────

終了タグ 'head' が開始タグ 'link' と一致していません。リソース 'http://○○○○.com/data/templete/getzaiko.xml' の実行エラーです。ライン 5、位置 3

</head>
--^

--------------------------


このときの'sl_zaiko.xsl'
--------------------------
<?xml version ='1.0' encoding='UTF-8'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.01" encoding="Shift_JIS" />
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" href="../../○○○.css" type="text/css" />
</head>
<body>
  …
  …
  …
--------------------------

お礼日時:2006/01/21 13:42

MS SQLServer


って使ったことはないのでトンチンカンだったらすみません。
XSL('sl_zaiko.xsl')で出力を作っていると思うので
xslの先頭部分で
<xsl:output method="html" />
を指定すればいいように思います。
勘違いしてたらすみません。

この回答への補足

その指定はしてあるのですが、
URLに、”?contenttype=text/html”を付けない場合
以下のエラーメッセージがブラウザに表示されます。
付けるとまともに表示されるので、URL以外の箇所に記述できればよいのですが…


エラーメッセージ
--------------------------------
XML ページを表示できません
スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。

'>' 文字が必要です。リソース 'http://www.w3.org/TR/html4/loose.dtd' の実行エラーです。ライン 31、位置 3

-- Typical usage:
--^

--------------------------------

他のxmlを指定した場合も必ず”ライン 31、位置 3”でエラーになります。
xslの記述内容的には'>'が足りない箇所は無いので何が悪いのかよくわかりません。



以下 'sl_zaiko.xsl' の先頭部分
--------------------------------
<?xml version ='1.0' encoding='UTF-8'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
  …
  …
  …
--------------------------------

補足日時:2006/01/19 12:03
    • good
    • 0

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