1

XSL を使用して、カタログ数値の XML リストを価格でソートする方法を見つけようとしています。現時点では、XML からの正しい情報を表示するだけです。次のコードを使用する場合。

<xsl:template match="catalog">
    <html>
        <head>
            <title>book catalog</title>
        </head>
        <body>
            <h1>book catalogs</h1>
            <table border="1">
                <thead>
                    <tr bgcolor="red">
                        <td>id</td><td>author</td><td>title</td><td>generation</td><td>price</td><td>publish date</td><td>description</td>
                    </tr>
                </thead>
                <xsl:for-each select="book">
                    <xsl:sort data-type="number" select="price" />
                    <tbody>
                    <tr>

                        <td><xsl:value-of select="@id"/></td>
                        <td><xsl:value-of select="author"/></td>
                        <td><xsl:value-of select="title"/></td>
                        <td><xsl:value-of select="generation"/></td>
                        <td><xsl:value-of select="price"/></td>
                        <td><xsl:value-of select="publishDate"/></td>
                        <td><xsl:value-of select="description"/></td>
                    </tr>
                </tbody>
                </xsl:for-each>
            </table>
        </body>
    </html>



</xsl:template>

しかし、 xsl:sortの場所を変更してtbodyタグの後に配置すると、エラーが発生します。この2つのコードの違いは何ですか? xsl:for-each の後にxsl :sortを挿入する必要がありますか、それとも何か他のことが問題を引き起こしますか?

        <body>
            <h1>book catalogs</h1>
            <table border="1">
                <thead>
                    <tr bgcolor="red">
                        <td>id</td><td>author</td><td>title</td><td>generation</td><td>price</td><td>publish date</td><td>description</td>
                    </tr>
                </thead>
                <xsl:for-each select="book">
                    <tbody>

                        <tr>
                        <xsl:sort data-type="number" select="price" />

                        <td><xsl:value-of select="@id"/></td>
                        <td><xsl:value-of select="author"/></td>
                        <td><xsl:value-of select="title"/></td>
                        <td><xsl:value-of select="generation"/></td>
                        <td><xsl:value-of select="price"/></td>
                        <td><xsl:value-of select="publishDate"/></td>
                        <td><xsl:value-of select="description"/></td>
                    </tr>
                </tbody>
                </xsl:for-each>
            </table>
        </body>

ArrayList をアルファベット順にソートし、setText メソッドで使用するにはどうすればよいですか?

これは私が持っているものです

ArrayList <String> cdList = new ArrayList();
Collections.addAll(cdList, "ExampleA\n"+"ExampleB\n"+"ExampleC\n"+"ExampleD");

Collections.sort(cdList, String.CASE_INSENSITIVE_ORDER);

System.out.println(cdList);


    bigBox.setText("Original Order\n**************\n");


    for (int i = 0; i < cdList.size(); i++)  {
    bigBox.setText(bigBox.getText()+""+cdList.get(i)+"\n");
    }

    bigBox.setText(bigBox.getText()+"\n\nSorted Order\n************\n");
    Collections.sort(cdList);


    for (int j = 0; j < cdList.size(); j++)  {
    bigBox.setText(bigBox.getText()+""+);
    }

4 つの例を元の順序とアルファベット順に出力したいと思います。私は何を間違っていますか?

4

1 に答える 1

1

仕様によると

XSLT 1.0 :

<!-- Category: instruction -->
<xsl:for-each
  select = node-set-expression>
  <!-- Content: (xsl:sort*, template) -->
</xsl:for-each>

XSLT 2.0 :

<!-- Category: instruction -->
<xsl:for-each
  select = expression>
  <!-- Content: (xsl:sort*, sequence-constructor) -->
</xsl:for-each>

定義がxsl:sort存在する場合は、 内の最初の子要素でなければなりませんfor-each

于 2013-11-12T16:59:09.100 に答える