1

次の 2 つの xsl ファイルがあるとします。

牛ラッパー.xsl

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:element name="cow">
            <next-match />
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

test.xsl

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:import href="cow-wrapper.xsl" />

    <xsl:template match="/">
        <!-- regular stuff to do -->
    </xsl:template>

</xsl:stylesheet>

この場合、cow-wrapper.xsl のルート マッチはまったく呼び出されません。ルート テンプレートを一致させる方法はありますか?

私が求めているのは、単純にファイルをインポートして、通常の出力をラップする方法です。たとえば、石鹸の封筒。

4

2 に答える 2

1

インポートされたテンプレートのテンプレートを最初に「実行」したい場合は、インポートするスタイルシートに同じ一致パターンを持つテンプレートがないか、次のように記述します。

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:import href="cow-wrapper.xsl" />

    <xsl:template match="/">
        <xsl:next-match/>
        <!-- regular stuff to do -->
    </xsl:template>
</xsl:stylesheet>
于 2013-01-23T15:22:33.353 に答える
0

XSLT 仕様から、インポートされたテンプレートは常に、インポートの優先順位が高い (メインの XSLT のインポートの優先順位が最も高い) 競合するテンプレートよりも優先順位が低いように見えますが、おそらくこれは適切な回避策でしょうか?:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:element name="cow">
            <apply-templates select="." mode="regular">
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:import href="cow-wrapper.xsl" />

    <xsl:template match="/" mode="regular">
        <!-- regular stuff to do -->
    </xsl:template>

</xsl:stylesheet>
于 2013-01-23T14:26:06.670 に答える