2013-05-29 5 views
1

J'ai un XML que j'ai besoin de transformer en HTML, il contient des nombres et leur parité. Je dois créer deux colonnes une même pour et d'autres pour ajouter, mais je ne peux pas mettre deux colonnesXSLT pour un nombre xml

code XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<?xml-stylesheet type="text/xsl" href="numbers.xsl"?> 
<Whole_Numbers> 
    <Number> 
      <Value>1</Value> 
      <Parity>odd</Parity> 
    </Number> 
    <Number> 
      <Value>2</Value> 
      <Parity>even</Parity> 
    </Number> 
    <Number> 
      <Value>3</Value> 
      <Parity>odd</Parity> 
    </Number> 
    <Number> 
      <Value>4</Value> 
      <Parity>even</Parity> 
    </Number> 
</Whole_Numbers> 

XSLT -

<?xml version="1.0" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>Whole Numbers</h2> 
    <table border="1"> 
    <tr > 
     <th>Odd Numbers between 1 and 100</th> 
     <th>Even Numbers between 1 and 100</th> 
    </tr> 
    <xsl:for-each select="Whole_Numbers/Number"> 
    <tr> 
    <xsl:if test="contains(Parity, 'odd')"> 
     <td><xsl:value-of select="Value"/></td> 
    </xsl:if> 
    </tr> 
    </xsl:for-each>  
    </table> 
    </body> 
    </html> 
</xsl:template> 

Sortie - seuls les nombres impairs dans la colonne des nombres impairs, si j'inclus une autre étiquette td cela ne fonctionne pas

Répondre

1

S'ils sont certainement en alternance impair-pair-impair-pair comme vous pourriez alors pour-chacun sur seulement les éléments impairs Number puis utilisez following-sibling::Number[1] pour obtenir ce qui suit immédiatement, même un:

<xsl:for-each select="Whole_Numbers/Number[Parity='odd']"> 
    <tr> 
    <td><xsl:value-of select="Value"/></td> 
    <td><xsl:value-of select="following-sibling::Number[1]/Value"/></td> 
    </tr> 
</xsl:for-each>