4

呼び出しテンプレートのメタデータを含む meta.xsl があります。

<xsl:call-template name="og-type" />

テンプレートは meta.xsl にあります (すべてのページ用):

<xsl:template name="og-type">
 <meta property="og:type" content="website"></meta>
</xsl:template>

問題は、このテンプレートをオーバーライドする方法です。Articles.xsl でオーバーライドされたテンプレートを使用する必要があります (これは記事ページ用です)。

<xsl:template name="og-type">
 <meta property="og:type" content="article"></meta>
</xsl:template>

はい、テンプレートの最初のバリアントを Mainpage.xsl に入れることができますが、それがさらに 10 個のテンプレートになるとしたらどうでしょうか? エラーが発生します。これは、何も呼び出されないためです。

4

1 に答える 1

2

基本スタイルシートが別のスタイルシートにインポートされたときにテンプレートを静的にオーバーライドしたい場合は、優先度またはモードのいずれかが最良の答えかもしれません。優先度には実際には「重要度」の要因が組み込まれているため、インポートするスタイルシートのバージョンは、優先度またはモードがその選択を上書きしない限り、常にデフォルトで選択されているものでなければなりません。

http://www.w3.org/TR/xslt#conflict

特定の条件下で処理するときにのみ異なる動作が必要な場合は、バリアント テンプレートを XSLT モードに関連付け、そのポイントの上のテンプレートの 1 つにロジックを持たせて、どのケースが関連しているかを認識させ、呼び出しを発行するようにします。 -適切なモードに切り替えるテンプレート。

http://www.w3.org/TR/xslt#modes

于 2014-01-02T21:10:51.587 に答える