2

考虑以下 XML 代码:

<tip>
    <number>1</number>
    <number>2</number>
    <number>3</number>
    <number>4</number>
    <number>5</number>
</tip>

我想要这样的 HTML 输出:

<table>
    <tr>
        <td><number>1</number></td>
        <td><number>2</number></td>
    </tr>
    <tr>
        <td><number>3</number></td>
        <td><number>4</number></td>
    </tr>
    <tr>
        <td><number>5</number></td>
    </tr>
</table>

我只是 XSL 的新手,我希望有人可以帮助我解决这个问题。

4

1 回答 1

3

你可以用mod(模)来做到这一点。

XML 输入

<tip>
    <number>1</number>
    <number>2</number>
    <number>3</number>
    <number>4</number>
    <number>5</number>
</tip>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="tip">
        <table>
            <xsl:apply-templates select="number[not(position() mod 2 = 0)]"/>
        </table>
    </xsl:template>

    <xsl:template match="number">
        <tr>
            <td><xsl:value-of select="."/></td>
            <td><xsl:value-of select="(following-sibling::number)[1]"/></td>
        </tr>
    </xsl:template>

</xsl:stylesheet>

输出

<table>
   <tr>
      <td>1</td>
      <td>2</td>
   </tr>
   <tr>
      <td>3</td>
      <td>4</td>
   </tr>
   <tr>
      <td>5</td>
      <td/>
   </tr>
</table>
于 2013-10-31T03:53:44.223 回答