1

そこで、XML ファイルを HTML に解析するための XSLT 変換を作成しています。しばらくの間、すべてがうまくいきました。しかし、私は問題に遭遇しました。基本的に、私が期待する順序に従っていないようです。

変換には、次のようなコードがあります。

<xsl:template match="/"
<html>
    <head></head>
    <body>
        <h1>Summary</h1>
        <table>
            <xsl:apply-templates select="theItem"/>
        </table>
    </body>
</html>
</xsl:template>
<xsl:template match="theItem"/>
    <tr><td>Column1</td><td>Column2</td></tr>
</xsl:template>

私が期待しているのは、テーブルを作成し、テンプレートに一致する各行を埋めることです。

代わりに、テーブルを開いて閉じ、すべての行を後に配置します。このようなもの。

<table></table>
<tr>
    <td>
        Column1
    </td>
    <td>
        Column2
    </td>
</tr>
<tr>
    <td>
        Column1
    </td>
    <td>
        Column2
    </td>
</tr>

一体何が起こっているのでしょうか?問題があるかどうかはわかりませんが、msxsl を使用して変換を行いました。また、変換をデータに埋め込んでIEで開いてみました。同じ問題を作成します。これが意図した動作になるかどうかはわかりませんが、欠けているものがあるかもしれません。

編集

テンプレート アプリケーションは、任意の種類の任意の数のタグでラップでき、テンプレート情報が表示される前にすべて開いたり閉じたりすることに注意してください。

4

1 に答える 1

1

ほとんどの場合、この質問は時代遅れですが、誰かが同様のバグを見つけた場合は、問題を明確にしたいと思います.

何が起こっていたのかというと

<xsl:apply-templates select="theItem"/>

サンプル コードで呼び出されたときに、何も一致しませんでした。そのため、何も生成されませんでした (ご想像のとおり)。ただし、コードの後半で何かが一致しました

<xsl:template match="theItem"/>
    <tr><td>Column1</td><td>Column2</td></tr>
<xsl:template>

そして、すべての行を挿入していました。これにより、望ましくない効果が生じました。

誰かがこの動作を見たことがあれば、それが私が最初に見る場所です. テンプレートが実際に呼び出されていることを確認してください。これにより、テンプレートの順不同のアプリケーションが発生する可能性があります。この解決策にたどり着くのを手伝ってくれたすべての人に感謝します。

于 2014-06-30T15:28:37.787 に答える