1

Muenchianメソッドについて読んでいますが、必要な形式のhtmlを生成するためのグループ化を理解していません。

これがソースxmlです。

<?xml version="1.0" encoding="UTF-8"?>
<env>
<paramCount>4</paramCount>
<param parameter="id" value="1371"/>
<param parameter="xform" value="none"/>
<param parameter="user" value="Administrator"/>
<param parameter="time-stamp" value="Jun 5, 2012 2:29:45 PM"/>
<sql name="Matrix Demo" qid="1371">
    <row num="1">
        <col meta="MATRIX.X_TITLE" grp="0" label="X" type="12" name="X">1-Sample Topic</col>
        <col meta="MATRIX.X_ID" grp="0" label="X_ID" type="2" name="X_ID">3838</col>
        <col meta="MATRIX.Y_TITLE" grp="0" label="Y" type="12" name="Y">DC</col>
        <col meta="MATRIX.Y_ID" grp="0" label="Y_ID" type="2" name="Y_ID">4909</col>
        <col meta="MATRIX.PRIORITY" grp="0" label="Priority" type="2" name="Priority">1740</col>
    </row>
    <row num="2">
        <col meta="MATRIX.X_TITLE" grp="0" label="X" type="12" name="X">1-Sample Topic</col>
        <col meta="MATRIX.X_ID" grp="0" label="X_ID" type="2" name="X_ID">3838</col>
        <col meta="MATRIX.Y_TITLE" grp="0" label="Y" type="12" name="Y">Maryland</col>
        <col meta="MATRIX.Y_ID" grp="0" label="Y_ID" type="2" name="Y_ID">4910</col>
        <col meta="MATRIX.PRIORITY" grp="0" label="Priority" type="2" name="Priority">1740</col>
    </row>
    <row num="3">
        <col meta="MATRIX.X_TITLE" grp="0" label="X" type="12" name="X">1-Sample Topic</col>
        <col meta="MATRIX.X_ID" grp="0" label="X_ID" type="2" name="X_ID">3838</col>
        <col meta="MATRIX.Y_TITLE" grp="0" label="Y" type="12" name="Y">Virginia</col>
        <col meta="MATRIX.Y_ID" grp="0" label="Y_ID" type="2" name="Y_ID">4908</col>
        <col meta="MATRIX.PRIORITY" grp="0" label="Priority" type="2" name="Priority">1740</col>
    </row>
    <row num="4">
        <col meta="MATRIX.X_TITLE" grp="0" label="X" type="12" name="X">2-Sample Topic</col>
        <col meta="MATRIX.X_ID" grp="0" label="X_ID" type="2" name="X_ID">4901</col>
        <col meta="MATRIX.Y_TITLE" grp="0" label="Y" type="12" name="Y">DC</col>
        <col meta="MATRIX.Y_ID" grp="0" label="Y_ID" type="2" name="Y_ID">4909</col>
        <col meta="MATRIX.PRIORITY" grp="0" label="Priority" type="2" name="Priority">1741</col>
    </row>
    <row num="5">
        <col meta="MATRIX.X_TITLE" grp="0" label="X" type="12" name="X">2-Sample Topic</col>
        <col meta="MATRIX.X_ID" grp="0" label="X_ID" type="2" name="X_ID">4901</col>
        <col meta="MATRIX.Y_TITLE" grp="0" label="Y" type="12" name="Y">Maryland</col>
        <col meta="MATRIX.Y_ID" grp="0" label="Y_ID" type="2" name="Y_ID">4910</col>
        <col meta="MATRIX.PRIORITY" grp="0" label="Priority" type="2" name="Priority">1741</col>
    </row>
    <row num="6">
        <col meta="MATRIX.X_TITLE" grp="0" label="X" type="12" name="X">2-Sample Topic</col>
        <col meta="MATRIX.X_ID" grp="0" label="X_ID" type="2" name="X_ID">4901</col>
        <col meta="MATRIX.Y_TITLE" grp="0" label="Y" type="12" name="Y">Virginia</col>
        <col meta="MATRIX.Y_ID" grp="0" label="Y_ID" type="2" name="Y_ID">4908</col>
        <col meta="MATRIX.PRIORITY" grp="0" label="Priority" type="2" name="Priority">1741</col>
    </row>
    ...
</sql>
</env>

これが私が達成しようとしていることです。

<html>
<body>
<table border="1" width="500px">
<thead>
    <tr>
        <th>&#160;</th>
        <th>1-Sample Topic</th>
        <th>2-Sample Topic</th>
        <th>3-Sample Topic</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>DC</td>
        <td>1740</td>
        <td>1741</td>
        <td>1742</td>
    </tr>
    <tr>
        <td>Maryland</td>
        <td>1740</td>
        <td>1741</td>
        <td>1742</td>
    </tr>
    <tr>
        <td>Virginia</td>
        <td>1740</td>
        <td>1741</td>
        <td>1742</td>
    </tr>
</tbody>
</table>
</body>
</html>

必要な出力を取得することに実際には近づいていません。http://www.jenitennison.com/xslt/grouping/muenchian.htmlから例を取得しましたが、それ以上は取得しませんでした。

colセクションに表示されるデータを制御することはできますが、ツリー全体を変更することはできません。どんな助けでも大歓迎です。

4

1 に答える 1

1

<col>どの要素をグループ化するのが最も信頼できるかはわかりませんが、との要素が適切であるname="X_ID"と思います。name="Y_ID"

Muenchianメソッドの目的は、同じ特性を持つすべての要素をすばやく見つけることです。したがって、この場合、最初の行X_IDの要素に配置するテキストを見つけるために列の値で行をグループ化し、後続の行の要素に表示する行を決定するために列<th>の値で行を個別にグループ化する必要があります。Y_ID<td>

このスタイルシートは、指定したとおりにグループ化を行います。指定したデータに適用したときの出力がその下に表示されます。

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

  <xsl:output method="html" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:key name="rows_by_x_id" match="row" use="col[@name='X_ID']" />
  <xsl:key name="rows_by_y_id" match="row" use="col[@name='Y_ID']" />

  <xsl:template match="/env/sql">

    <html>
      <body>

        <table border="1" width="500px">

          <tr>
            <th>&#160;</th>
            <xsl:for-each select="row[generate-id() = generate-id(key('rows_by_x_id', col[@name='X_ID']))]">
              <th>
                <xsl:value-of select="col[@name='X']"/>
              </th>
            </xsl:for-each>
          </tr>

          <xsl:for-each select="row[generate-id() = generate-id(key('rows_by_y_id', col[@name='Y_ID']))]">
            <tr>
              <td>
                <xsl:value-of select="col[@name='Y']"/>
              </td>
              <xsl:for-each select="key('rows_by_y_id', current()/col[@name='Y_ID'])">
                <td>
                  <xsl:value-of select="col[@name='Priority']"/>
                </td>
              </xsl:for-each>
            </tr>
          </xsl:for-each>

        </table>

      </body>
    </html>

  </xsl:template>

</xsl:stylesheet>

出力

4<html>
   <body>
      <table border="1" width="500px">
         <tr>
            <th>&nbsp;</th>
            <th>1-Sample Topic</th>
            <th>2-Sample Topic</th>
         </tr>
         <tr>
            <td>DC</td>
            <td>1740</td>
            <td>1741</td>
         </tr>
         <tr>
            <td>Maryland</td>
            <td>1740</td>
            <td>1741</td>
         </tr>
         <tr>
            <td>Virginia</td>
            <td>1740</td>
            <td>1741</td>
         </tr>
      </table>
   </body>
</html>
于 2012-06-05T20:32:53.397 に答える