
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 はストアドプロシージャです。
No.3ベストアンサー
- 回答日時:
原因についてははっきり特定できます。
HTTPのデフォルトのエンコーディングは"us-ascii"で,XMLやHTMLで表現したエンコーディングルールが無視されるわけです。
XML宣言やHTMLの<meta>でエンコーディングルールを明記すれば,指定したエンコーディングで送信されるように勘違いされる方が多いのですが,優先されるのはHTTPヘッダ情報Content-Typeフィールドの値です。
zutさんがお調べになった限りでは,HTTPヘッダを出力するには,”?contenttype=text/html”をURLに付けないと無理のようですね。
ということで,HTTPヘッダをコントロールしない限りは,スタイルシートをいくら変更してもうまくいきません。
No.2
- 回答日時:
'
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>を消してみますね。
色々やってみましたが、ダメでした。
やはり”?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>
…
…
…
--------------------------
No.1
- 回答日時:
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"/>
…
…
…
--------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XML、XSLTの適応エラー(IEから...
-
重複するものを消したい
-
MSXML で Windows-31J のキャラ...
-
(VB.NET)TreeViewのノード文...
-
XMLパースエラー
-
4バイトを10進数に変換する方法
-
SNMP リンクダウンとノードダ...
-
C# TreeView 効率良いノード追...
-
昔Winnyってありましたけど、あ...
-
XSLTの動作
-
Visual Basic .NET の識別子は...
-
XMLで要素が記述された順番に意...
-
複数のマックPCによる数値計算...
-
CPUの考え方を教えてください ...
-
XMLをXSLを使いHTMLに変換した...
-
Windowsで見かけるxmlファイル...
-
XSLTにてタグ名を取得する方法
-
ルート要素ノードが2個ある場合?
-
TreeView の初期表示について
-
Excel(2007以降)をxml形式に変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XML、XSLTの適応エラー(IEから...
-
xmlファイルが上手にHTMLに変換...
-
XMLを出力する時のエラー原因
-
xmlstarletで他ファイルからエ...
-
xsltを利用して変換後改行が入る
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
C#でTreeViewのCheckBoxのサイ...
-
昔Winnyってありましたけど、あ...
-
バッチファイルでテキストファ...
-
ノードとは
-
4バイトを10進数に変換する方法
-
特殊記号が勝手にエスケープさ...
-
同じタグ名の項目取得
-
このエラー、何とかなりません...
-
XPathで途中に名前空間が設定さ...
-
あせんうぶり言語
おすすめ情報