1

xslt はかなり新しく、PDF 生成用の xslt テンプレートを作成しようとしています。

着信 xml のスニペットを次に示します。

<element name="rootElement">
    <attributes />
    <elements>
        <element name="childElement">
            <attributes>
                <attribute name="attributename" value="Yes" />
            </attributes>
        </element>
    </elements>
</element>

すべての要素名と対応する値を表形式で出力するだけでなく、各子要素に固有のテキストを表示する必要があります。

いくつかの調査を行った後、テンプレートの一致とモード属性の設定を組み合わせることでこれを達成できると考えました。ここに私が書いたコードがあります:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="DOCUMENT">
        <xsl:apply-templates select="DATA" />
    </xsl:template>

    <xsl:template match="DATA">

        <xsl:apply-templates select="element" />
        <xsl:apply-templates select="element" mode="test" />

    </xsl:template>

    <xsl:template match="element">
        <fo:block font-size="18.0pt" font-family="Arial"
            font-weight="bold">
            Display something I.
        </fo:block>
    </xsl:template>

    <xsl:template match="element" mode="test">
        <fo:block font-size="18.0pt" font-family="Arial"
            font-weight="bold">
            Display something II.
        </fo:block>
    </xsl:template>
</xsl:stylesheet>

実行後の出力は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-size="18.0pt" font-family="Arial" font-weight="bold">
            Display something I.
</fo:block>

テンプレートとモードの一致が実行されなかった理由を誰か教えてください。

どんな考え/解決策/洞察も大歓迎です。

4

2 に答える 2

0

処刑されることもありませ<xsl:template match="DOCUMENT">ん。<xsl:template match="DATA">

2 番目のテンプレートを次のように変更した場合:

<xsl:template match="/">

    <xsl:apply-templates select="element" />
    <xsl:apply-templates select="element" mode="test" />

</xsl:template>

期待どおりの結果が表示されるはずです。

于 2013-07-28T10:52:40.343 に答える
0

DATA 要素がないため、デフォルトの組み込みテンプレートから match="element" テンプレートが呼び出されている必要があります。これは、mode="test" でテンプレートの適用を行いません。

于 2013-07-27T16:57:32.510 に答える