J'ai un jeu de résultats xml qui doit être converti en utilisant XSL pour l'affichage dans une feuille de calcul Excel dans une application vb.net. Le jeu de résultats xml a 15 colonnes (15 propriétés du client comme le prénom, le nom, l'adresse, etc.) et je ne veux pas coder en dur l'attribut select de xsl/xpath avec les noms d'éléments xml ou property. J'ai besoin d'un XSL qui peut transformer le xsl en lignes et en colonnes sans connaître les noms des colonnes ni aucun codage en dur. Rendre les en-têtes gras est préférable J'ai essayé de le faire et atteint un certain point mais loin du résultat final. S'il vous plaît aider à atteindre cetXSL pour convertir toutes les lignes et colonnes de XSL pour l'exportation vers Excel. looping dynamique
Voici l'entrée XML
<?xml version="1.0" encoding="utf-8"?>
<ClientArray>
<Client>
<LastName>Bill</LastName>
<FirstName>Gates</FirstName>
<MiddleName/>
<Suffix/>
<DateOfBirth>30-May-1968</DateOfBirth>
<PlaceOfBirth/>
<SSN>n/a</SSN>
<Gender>Male</Gender>
<City>SHELTON</City>
<State>WA</State>
<Zip>96484</Zip>
</Client>
<Client>
<LastName>Warron</LastName>
<FirstName>Buffet</FirstName>
<MiddleName>P</MiddleName>
<Suffix/>
<DateOfBirth>12-Aug-1957</DateOfBirth>
<PlaceOfBirth>Mississippi</PlaceOfBirth>
<SSN>n/a</SSN>
<Gender>Male</Gender>
<City>Missi</City>
<State>KS</State>
<Zip>66096</Zip>
</Client>
<Client>
<LastName>Steev</LastName>
<FirstName>Jobbs</FirstName>
<MiddleName/>
<Suffix/>
<DateOfBirth>19-Apr-1959</DateOfBirth>
<PlaceOfBirth>Cupertino</PlaceOfBirth>
<SSN>n/a</SSN>
<Gender>Male</Gender>
<City>Cupertino</City>
<State>CA</State>
<Zip>96066</Zip>
</Client>
</ClientArray>
c'est le code que j'ai
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<HEAD>
<STYLE type="text/css"> TABLE{table-layout: automatic; width:100%} .tblHeader{background-color:RGB(192,192,192);font-weight:bold} .row1{background-color:RGB(204,204,255)} .row2{background-color:RGB(153,204,255)} </STYLE>
</HEAD>
<BODY>
<TABLE border="1">
<!-- Global variable to get column count -->
<xsl:variable name="columns" select="number(/list/@columns)"/>
<THEAD>
<TR class="tblHeader">
<xsl:for-each select="ClientArray/Client">
<TD>name()</TD> <!-- {Getting the xml column header here} -->
</xsl:for-each>
</TR>
</THEAD>
<TBODY>
<xsl:for-each select="ClientArray/Client">
<TR>
<xsl:choose>
<xsl:when test="position() mod 2 = 1">
<xsl:attribute name="class">row1</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="class">row2</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select=".">
<TD>
<xsl:value-of select="./*[count(child::*) = 0]"/>
</TD>
</xsl:for-each>
</TBODY>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
Ma sortie désirée est
MiddleName LastName FirstName Suffixe etc .... Bill Gates
Buffet Warren
Fondamentalement, le XML doit être converti en une table simple qui pourrait être exportée vers EXCEL. Leur clé est que je ne veux pas de codage en dur sur l'attribut xpath "select" de sorte que si j'ajoute plus de champs de saisie, XSL fonctionne sans problème. le xsl devrait faire une boucle pour toutes les colonnes sans connaître les noms des colonnes
J'ai corrigé votre formatage - vous devez indenter le code 4 espaces, ou SO le modifiera surtout s'il contient du HTML ou du XML. –
Aussi, s'il vous plaît modifier votre question et ajouter des exemples de l'entrée XML et la sortie désirée. –
Vous avez oublié de fournir le document XML source et le résultat attendu! –