2010-11-22 35 views
2

以下のブラウザに返されます。Chrome、Firefox、SafariはXSLTを適用していませんか? IEはそうです!

<?xml version="1.0"?> 
    <?xml-stylesheet type="text/xsl" href="to_xhtml.xslt"?> 
    <root> 
     <value>test data</value> 
    </root> 

クローム7とFF 5のみXML値を示すXSLTをAPPYはありません。 IEは結果のXHTMLを示すXSLTを適用します。

XSLTファイルが存在し、有効である - 私はローカルでXMLをproccessとChromeとFirefoxが得られXHTMLを開くことができます...

WebサーバはIIS 6とのインタフェースであることが何かを持っている場合は、PHP 5.3でありますそれで?

UPDATE: XSLT:

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

    <xsl:output 
    method='xml' 
    indent='yes' 
    doctype-public='"-//W3C//DTD XHTML Basic 1.1//EN" 
    "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"'/> 

    <xsl:template match="/root"> 
    <html> 
     <head> 
     <title> 
     </title> 
     </head> 
     <body> 
     <p> 
      <xsl:value-of select="value"/> 
     </p> 
    ... 
    </html> 
+1

1.最初のファイルはどのContent-Typeですか? 2. xsltを表示します。 –

+1

@meder 1。php:text/html(ライブHTTPヘッダーから)によって返されるデフォルトは、text/xmlであるはずですか?上のXSLTのトップ。 – markmnl

+0

あなたは 'method = 'html''で試してみましたか? –

答えて

4

あなたのページが、この場合には、正しいHTTP のContent-Typeヘッダー値を提供されていることを確認する必要があります可能text/xmlで、PHPで使用してヘッダー機能:

header('Content-type: text/xml'); 
echo $xmlStr; 

*私はこのために正しい方向に私を導いてくれてありがとう。

またクロームとSafariであるため、上記DOCTYPE公開値のXSLTを適用中にエラーが引き続き発生する:

<xsl:output 
method='xml' 
indent='yes' 
doctype-public='"-//W3C//DTD XHTML Basic 1.1//EN" 
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"'/>; 

それがあるべき:

<xsl:output 
    method="xml" 
    indent="yes" 
    doctype-public="-//W3C//DTD XHTML Basic 1.1//EN" 
    doctype-system="http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"/> 

DOCTYPE、公共doctype-systemがspecに従って指定されていない場合でも属性を調べるべきではありません。

* Doctype-systemを指摘するためのLarsHのおかげで、別の値にする必要があります。 DOCTYPE-公共属性について

+0

便利な回答、+1。 doctype-publicの値の修正に関する私の答えも見てください。 – LarsH

1

:DOCTYPEシステム 属性が指定されていない限りspec

によるとDOCTYPE-public属性は を無視する必要があります。

doctype-public属性を持ちdoctype-systemを持たない<xsl:output-method>要素については、かなり怪しいものがあります。 (それは、「転倒」からChromeとSafariのを言い訳しない... =クラッシュ?)

たぶん、あなたは

<xsl:output 
    method="xml" 
    indent="yes" 
    doctype-public="-//W3C//DTD XHTML Basic 1.1//EN" 
    doctype-system="http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd" /> 

を望んでいたXMLの公共およびシステム識別子の詳細についてhereを参照してください。

これは、FxとChromeがXSLT(コンテンツタイプが理由だった)を使用してXMLをレンダリングしない理由ではないようですが、これはおそらく修正したいことです。

+0

FxとChromeがレンダリングされなかった理由はContent-Typeで、(Copntent-typeが修正された後)ChromeとSafariが転倒する(XSLTの適用をやめ、エラーメッセージを表示して、この場合は何もしません)、私の最初のdoctype-public値でXSLTを適用し、アポストロフィを逆転させ、引用符でエラーを解決しました。しかし、あなたが指摘したように、doctype-systemをdoctype-public値から分離する必要があります - ありがとう!私は私の答えを更新します。 – markmnl

関連する問題