У меня есть набор результатов xml, который необходимо преобразовать с помощью XSL для отображения в таблице Excel в приложении vb.net. Набор результатов xml имеет 15 столбцов (15 свойств клиента, таких как имя, фамилия, адрес и т. Д.), И я не хочу жестко кодировать атрибут select xsl / xpath с именами свойств или элементов xml. Мне нужен XSL, который может превратить xsl в строки и столбцы, не зная имен столбцов или какого-либо жесткого кодирования. Делать заголовки жирным шрифтом предпочтительнее
Я попытался сделать это и достиг какой-то точки, но далеко от конечного результата. Пожалуйста, помогите в выполнении этого
Вот входной 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>
это код, который у меня есть
<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>
Мой желаемый результат -
Фамилия, имя, отчество, суффикс среднего имени и т. Д. .....
Билл Гейтс
Буфет Уоррен
и т. д.
По сути, XML должен быть преобразован в простую таблицу, которая может быть экспортирована в EXCEL. Ключевым моментом является то, что я не хочу никакого жесткого кодирования для атрибута "select" xpath, так что если я добавлю больше полей ввода, XSL будет работать без проблем. xsl должен выполнить цикл для всех столбцов, не зная имен столбцов