XSL с использованием нескольких атрибутов узла - PullRequest
1 голос
/ 05 марта 2012

Я новичок во всем этом и пробовал различные маршруты и варианты, чтобы получить данные в мою таблицу, но я не могу получить атрибут узла второго и третьего измерения. Я, очевидно, ошибся в выборе значения атрибута или в использовании шаблона, поскольку я просто получаю повтор первого атрибута для каждого столбца.

Мой ввод XML:

<nodes>
  <node name="Server Dashboard">
    <children>
      <node name="Server Dashboard">
        <dimension name="Performance" status="20" id="10" >null</dimension>
        <dimension name="System" status="10" id="20" >null</dimension>
        <dimension name="Availability" status="30" id="30" >null</dimension>
        <children>
          <node name="SERVER 1">
            <dimension name="Performance" status="20" id="10" >null</dimension>
            <dimension name="System" status="10" id="20" >null</dimension>
            <dimension name="Availability" status="30" id="30" >null</dimension>
            <children>
            </children>
          </node>
          <node name="SERVER 2">
            <dimension name="Performance" status="20" id="10" >null</dimension>
            <dimension name="System" status="10" id="20" >null</dimension>
            <dimension name="Availability" status="30" id="30" >null</dimension>
            <children>
            </children>
          </node>
        </children>
      </node>
    </children>
  </node>
</nodes>

И я пытаюсь получить вывод вроде

<html>
  <body>
    <table border="1">
      <th>System</th>
      <th>Performance</th>
      <th>Status</th>
      <th>Availability</th>
    </tr>
    <tr> 
      <td>SERVER 1</td>
      <td>20</td>   
      <td>10</td>
      <td>30</td>
    </tr>
    <tr> 
      <td>SERVER 2</td>
      <td>20</td>   
      <td>10</td>
      <td>30</td>
    </tr>
  </table>
</body>
</html>

И в настоящее время у меня есть xsl, который почти возвращает меня туда, но не совсем, так как кажется, что он не зацикливается на узлах измерения.

<xsl:template match="/">
<html>
  <body>
    <table border="1">
        <th>System</th>
        <th>Performance</th>
        <th>Status</th>
        <th>Availability</th>
      </tr>
      <xsl:for-each select="nodes/node/children/node/children/node"> 
      <tr> 
        <td><xsl:value-of select="@name"/></td>
        <td><xsl:value-of select="dimension/@Status[//@id='10']"/></td>   
        <td><xsl:value-of select="dimension/@status[//@id='20']"/></td>
        <td><xsl:value-of select="dimension/@status[//@id='30']"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>

Моя конечная цель - заменить номер статуса цветной ячейкой или .gif, но в данный момент ребенок делает шаг. Любая помощь с благодарностью получена.

1 Ответ

1 голос
/ 05 марта 2012

Попробуйте следующее. Главное - сначала выбрать измерение по значению атрибута id, а затем выбрать значение атрибута состояния.

<xsl:template match="/">
    <html>
        <body>
            <table border="1">
            <tr> 
                <th>System</th>
                <th>Performance</th>
                <th>Status</th>
                <th>Availability</th>
            </tr>
            <xsl:for-each select="nodes/node/children/node/children/node"> 
            <tr> 
                <td><xsl:value-of select="@name"/></td>
                <td><xsl:value-of select="dimension[@id='10']/@status"/></td>   
                <td><xsl:value-of select="dimension[@id='20']/@status"/></td>
                <td><xsl:value-of select="dimension[@id='30']/@status"/></td>
            </tr>
            </xsl:for-each>
            </table>
        </body>
      </html>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...