1

XSLT のインポート/インクルードについて興味深い質問があります。

同じルールを持つ 2 つの XSLT ファイルがあります。

領収書 XSLT: (単独で実行されます)

<xsl:template match="Booking" mode="extraStyle">
 <link rel="stylesheet" href="../css/receipt.css" type="text/css" media="screen"/>
</xsl:template>

EmailCommon XSLT: (電子メール ドキュメントのテンプレート ライブラリとして機能し、単独では実行されません)

 <xsl:template match="Booking" mode="extraStyle">
    <link rel="stylesheet" href="../css/email.css" type="text/css" media="screen"/>
 </xsl:template>

そのため、ドキュメントの種類に応じて、正しい CSS ファイルを挿入します。

私がやろうとしているのは、これら 2 つのドキュメントをさらに別の XSLT に含めることです。

<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
exclude-result-prefixes="msxsl" 
version="1.0">

<xsl:include href="receipt.xsl"/>
<xsl:include href="email.xsl"/>

<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>

それにもかかわらず、ルールは含まれている両方のスタイルシートで同じであるため、最終的には後入れ先ルールになり、email.css のみを含めることになります。

この場合、何か賢いことができるのではないかと思っていましたか?

私が考えていた唯一のことは、異なるモードを使用することですが、それは直感的ではなく、すべての同一のルールのコードを蓄積することです. XSLTでそれを行う方法と、それを行うことができるかどうかはわかりません。

手伝ってくれてありがとう!

PS 申し訳ありませんが、私は本当にこのサイトのフォーマット規則を理解しようとしていますが、単に理解できません:( gggrrr

4

1 に答える 1

2

テンプレート モードを異なるものにするのが最善の選択肢だと思います。

<xsl:stylesheet 
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
  exclude-result-prefixes="msxsl" 
>

  <xsl:include href="receipt.xsl"/>
  <xsl:include href="email.xsl"/>

  <xsl:template match="Booking">
    <xsl:apply-templates select="." mode="extraStyleReceipt" />
    <xsl:apply-templates select="." mode="extraStyleEmail" />
  </xsl:template>

</xsl:stylesheet>
于 2010-03-03T16:16:32.657 に答える