0

こんにちは、1 つの列に数字 (年) を表示し、2 番目の列にデータを表示する HTML テーブルを作成したいと考えています。以下は私のxsltです。タグが同じなので迷っています。

<chapter>
<row>
        <entry>
            <para>1984</para>
        </entry>
        <entry>
            <para>International Business Companies Act passed into
            law.</para>
        </entry>
    </row>
    <row>
        <entry>
            <para>2004</para>
        </entry>
        <entry>
            <para>BVI Business Companies Act passed into law, coming into
            force on 1 January 2005.</para>
        </entry>
    </row>
    <row>
        <entry>
            <para>2005</para>
        </entry>
        <entry>
            <para>All three corporate statutes exist in parallel and it is
            possible to incorporate companies under any of them.</para>
        </entry>
    </row>
    <row>
        <entry>
            <para>2006</para>
        </entry>
        <entry>
            <para>Incorporation provisions in the International Business
            Companies Act and the Companies Act are repealed on 31 December
            2005; the Acts remain in force but new companies may only be
            incorporated under the BVI Business Companies Act.</para>
        </entry>
    </row>
</chapter>

ありがとう

4

2 に答える 2

1

あなたが投稿した XML の最初の 2 つの要素が <row> 要素でラップされ、すべての行が行という親要素の下にグループ化されていると想定しています。

これらの仮定の一部が間違っている場合は、教えてください。コードを修正します。

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

    <xsl:output mode="html" indent="yes" omit-xml-declaration="yes"/>

    <xsl:template match="text()" />

    <!-- I am assuming that the parent element for the set of row elements is
         named rows. You can change this to match your XML -->
    <xsl:template match="chapter">
        <table>
            <tr>
                <th>Year</th>
                <th>Data</th>
            </tr>
            <xsl:apply-templates select="row" />
        </table>
    </xsl:template>

    <xsl:template match="row">
        <tr>
            <xsl:apply-templates select="*" />
        </tr>
    </xsl:template>

    <xsl:template match="para">
        <td><xsl:value-of select="." /></td>
    </xsl:template>

</xsl:stylesheet>

UPDATE : 各行の最初の entry/para 要素のみを一致させたい場合は、次のようなテンプレートを使用する必要があります。

<xsl:template match="entry[1]/para">
    <!-- Put your code here -->
</xsl:template>
于 2013-02-19T09:30:59.963 に答える
0

XSLTを使用してHTMLテーブルを作成する例を次に示します。例で使用されているデータセットはXMLと非常によく似ており、examples<book>タグを<row>タグなどに置き換えるだけです。

于 2013-02-19T09:17:48.040 に答える