2012-03-05 2 views
1

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

Мой вход 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

Попробуйте следующее. Главное - сначала выбрать значение по значению атрибута 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> 
+0

Замечательное и замечательное объяснение тоже. –

Смежные вопросы