0

我是 XSLT 的新手,在尝试使用 XSLT2 和 altovaXML 处理器时遇到以下问题。

<?xml version="1.0"?>
 <document>
  <row>
   <WEEK>11</WEEK>
   <PERIOD>201103</PERIOD>
   <ILPROD>some item</ILPROD>
   <CNME>some name</CNME>
   <QTY>100</QTY>
   <SP>40</SP>
   <REV>4000</REV>
   <COST>2000</COST>
   <VA>2000</VA>
   <VAP>50</VAP>
  </row>
</document>

我的 XSL 如下

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="/">
  <html>
  <body>
  <h2>Some text</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Analysis</th>
    </tr>
    <xsl:for-each-group select="document/row" group-by="ILPROD">
    <xsl:for-each select="current-group()">
      <tr>
      <td><xsl:value-of select="WEEK"/></td>
      <td><xsl:value-of select="PERIOD"/></td>
      <td><xsl:value-of select="ILPROD"/></td>
    </tr>
    </xsl:for-each>
    <tr><td>&nbsp</td></tr>
    </xsl:for-each-group>
    </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

很简单,我试图按“ILPROD”子节点进行分组,并在每个组之后输出一个空格。听起来很简单,但我显然犯了一个基本错误,因为处理器说它无法加载文档。如果我删除分组,它工作正常。

有什么想法我哪里出错了吗?

4

1 回答 1

1

尝试使用下面的而不是   (顺便说一下,它缺少一个分号):

<tr><td colspan="3"><br></br></td></tr>

并且不要忘记将输出更改为 html:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html"/>

<xsl:template match="/">
  <html>
  <body>
  <h2>Some text</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Analysis</th>
    </tr>
    <xsl:for-each-group select="document/row" group-by="ILPROD">
    <xsl:for-each select="current-group()">
      <tr>
      <td><xsl:value-of select="WEEK"/></td>
      <td><xsl:value-of select="PERIOD"/></td>
      <td><xsl:value-of select="ILPROD"/></td>
    </tr>
    </xsl:for-each>
    <tr><td colspan="3"><br></br></td></tr>
    </xsl:for-each-group>
    </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

当我在 Altova XML 中运行它时,我得到了正确的输出:

<html>
    <body>
        <h2>Some text</h2>
        <table border="1">
            <tr bgcolor="#9acd32">
                <th>Analysis</th>
            </tr>
            <tr>
                <td>11</td>
                <td>201103</td>
                <td>some item</td>
            </tr>
            <tr>
                <td colspan="3"><br></td>
            </tr>
        </table>
    </body>
</html>
于 2012-02-02T14:52:43.530 回答