6

IE7以下のみのスタイルシートをXSLページに追加するにはどうすればよいですか?次のようなヘッダー情報のテンプレートに追加してみました。

<xsl:template name="header">
<!--[if lte IE 7]>
<link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
<![endif]-->
</xsl:template>

また、HTMLのみのドキュメントで同じスニペットを使用し、正常に機能していても、条件がドキュメントで実行されることはありません。何が得られますか?

4

3 に答える 3

3

コメントはパーサーによって XSL 内のコメントとして認識され、生成された HTML コードから削除されます。

HTML にコメントを生成する場合は、コメントをブロック内に囲む必要があります。CDATAこれにより、XSL パーサーによってプレーン テキストとして認識され、目的のドキュメントに逐語的にコピーされます。

コードは次のようになります。

<![CDATA[
  <!--[if lte IE 7]>
  <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
  <![endif]-->
]]>

<![CDATA[との間のすべてが]]>プレーン テキストとして扱われます。

うまくいけば、それはあなたの質問に答えるはずです.

ただし、可能であれば、ここでの最善の解決策は IE7 のサポートを中止することです。使用状況の統計は、過去 6 か月ほどで大幅に低下しました。現在は IE6 とほぼ同じくらい低くなっています。まだ使っている人はほとんどいません。選択肢がない場合もあると思いますが、選択肢がある場合は、やめることをお勧めします。

[編集]

わかりました、さらに調査した結果、あなたが正しいようです。プレーンなCDATAブロックその出力をエスケープします (多くの場所で反対の主張があるにもかかわらず)。

<xsl:comment>代わりに、出力で HTML コメントを生成するために を使用する必要があります。条件付きコメント構文でこれを行うと非常に面倒になり、おそらくまだ CDATA を使用する必要があります。

私が見つけることができる最良の例はここにあります: http://getsymphony.com/download/xslt-utilities/view/21798/

ご覧のとおり、非常に多くのコードです。

短いバージョン (柔軟性なし) は次のようになります。

<xsl:comment>
    [if lte 7<![CDATA[>]]>
    <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
    <![CDATA[<![endif]]]>
</xsl:comment>

それが役立つことを願っています。申し訳ありませんが、元の回答は不完全でした。

于 2012-08-03T20:46:25.937 に答える
1

これは、DOE が役立つ稀なケースの 1 つです

<xsl:text disable-output-escaping="yes">
        &lt;!--[if lte IE 7]>
        &lt;link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
        &lt;![endif]-->
</xsl:text>

完全な例:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>

 <xsl:template match="/*">
    <xsl:text disable-output-escaping="yes">
        &lt;!--[if lte IE 7]>
        &lt;link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
        &lt;![endif]-->
    </xsl:text>
     <p>
       Done.
     </p>
 </xsl:template>
</xsl:stylesheet>

この変換が任意の XML ドキュメント (使用されていない) に適用されると、必要な正しい結果が生成されます。

<!--[if lte IE 7]>
        <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
        <![endif]-->
<p>
       Done.
     </p>
于 2012-08-04T15:45:56.693 に答える
-1

あなたが持っている:

<!--[if lte IE 7]>

そのはず:

<!--[if lt IE 7]>
于 2012-08-03T21:14:41.457 に答える