Как отобразить данные в одной таблице с 4 столбцами. Примечание: используются два оператора xsl: for-each - PullRequest
0 голосов
/ 14 декабря 2011

Я мог бы действительно использовать некоторую помощь, поскольку я пытался в течение более 2 недель. На данный момент я могу отобразить 3 столбца, атрибутами которых являются testName, длительность и результат. В то время как последний атрибут «хранилище» добавляется к сгенерированной таблице. Как отобразить все атрибуты в одну таблицу с 4 столбцами (testName, длительность, результат и хранилище)? Заранее спасибо за любую помощь.

xsl: for-each select = "/ cruisecontrol / build / t: TestRun / t: Results / t: UnitTestResult"

        <tr>
          <td>
            <xsl:value-of select="@testName"/>
          </td>
          <td>
            <xsl:value-of select="@duration"/>
          </td>
          <td>
            <xsl:value-of select="@outcome"/>
          </td>                                       
           </tr>
      </xsl:for-each>

xsl: for-each select = "/ cruisecontrol / build / t: TestRun / t: TestDefinitions / t: UnitTest"

    <tr>
      <td>
        <xsl:value-of select="@storage"/>
      </td>

    </tr>

1 Ответ

0 голосов
/ 14 декабря 2011

Не видя фактического XML (публикация образца части документа TestRun была бы полезной), вы можете попробовать:

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">

      <table>

        <xsl:apply-templates select="//build/Results/UnitTestResult"/>

      </table>
    </xsl:template>

  <xsl:template match="//build/Results/UnitTestResult">

    <xsl:variable name="ParentPosition" select="position()" />

    <tr>
      <td>
        <xsl:value-of select="$ParentPosition"/>
      </td>      
      <td>
        <xsl:value-of select="@testName"/>
      </td>
      <td>
        <xsl:value-of select="@duration"/>
      </td>
      <td>
        <xsl:value-of select="@outcome"/>
      </td>
      <td>
        <xsl:value-of select="ancestor::Results/TestDefinitions/UnitTest[$ParentPosition]/@storage"/>
      </td>
    </tr>

  </xsl:template>

</xsl:stylesheet>

Обратите внимание на использование position () и как его можно использоватьв качестве переменной в

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...