2010-08-10 5 views
0

J'ai un document XML qui ressemble àxslt retour de la colonne première occurance

<book>xxxxxxxxxxx</book> 
<record> 
    <field> 
    <column>Title</column> 
    <value>HF80</value> 
    </field> 
    <field> 
    <column>page</column> 
    <value>97</value> 
    </field> 

..... ...

Je dois imprimer la rubrique "colonne", comme une rangée de table. Je peux obtenir tous les enregistrements dans une table, mais je ne sais pas comment s'y prendre.

La sortie j'ai besoin ressemblerait à ceci: - tr td Titre/td td page/td/tr

Pointeurs bienvenue .. O

+0

Je pense que vous devriez publier un meilleur échantillon d'entrée. Aussi, y a-t-il seulement un élément 'record'? –

Répondre

0

Quelque chose comme ça?

<xsl:template match="/"> 
    <table width="100%" border="0" cellpadding="0" cellspacing="0"> 
    <tr> 
     <xsl:apply-templates select="root/record/field" /> 
    </tr> 
    </table> 
</xsl:template> 

<xsl:template match="/root/record/field"> 
    <td> 
    <xsl:value-of select="./value" /> 
    </td> 
</xsl:template> 
0

Cette transformation:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="record"> 
    <table border="1"> 
    <tr><xsl:apply-templates select="field/column"/></tr> 
    <tr><xsl:apply-templates select="field/value"/></tr> 
    </table> 
</xsl:template> 

<xsl:template match="column|value"> 
    <td><xsl:apply-templates/></td> 
</xsl:template> 

<xsl:template match="book/text()"/> 
</xsl:stylesheet> 

lorsqu'il est appliqué sur ce document XML (votre XML fourni fait bien formé):

<books> 
    <book>xxxxxxxxxxx</book> 
    <record> 
     <field> 
      <column>Title</column> 
      <value>HF80</value> 
     </field> 
     <field> 
      <column>page</column> 
      <value>97</value> 
     </field> 
    </record> 
</books> 

produit le résultat recherché :

<table border="1"> 
    <tr> 
     <td>Title</td> 
     <td>page</td> 
    </tr> 
    <tr> 
     <td>HF80</td> 
     <td>97</td> 
    </tr> 
</table> 
Questions connexes