Заявитель: данные не являются реальными, все данные являются фиктивными, включая теги, но логика реальна.
Файл XML
<MasterData>
<data>
<document type="1"> <!-- Document 1 -->
<configuration>
<attribute_info>
<attribute>Value similar to Document 2
</attribute>
<attribute>Value similar to Document 2
</attribute>
</attribute_info>
</configuration>
<Model>
<Name>Products</Name>
<ModelType>T1</ModelType>
</Model>
</document>
<document type="2"> <!-- Document 2 -->
<configuration>
<attribute_info>
<attribute name="shift" value="6$,$7$,$8$,$9$,$$,$$,$$,$" label="shift">6$,$7$,$8$,$9$,$$,$$,$$,$</attribute>
<attribute name="serviceType" value="Replace$,$Standard Replace$,$Specific Replace$,$Bar Replace$,$Bar & Plate Replace$,$Bush Replace$,$Bush Replace - Standard$,$Bush Replace - Specific" label="serviceType">Replace$,$Standard Replace$,$Specific Replace$,$Bar Replace$,$Bar & Plate Replace$,$Bush Replace$,$Bush Replace - Standard$,$Bush Replace - Specific</attribute>
<attribute name="hrs" value="1$,$2$,$2.5$,$4$,$1$,$2$,$6$,$6" label="hrs">1$,$2$,$2.5$,$4$,$1$,$2$,$6$,$6</attribute>
</attribute_info>
</configuration>
<Model>
<Name>Service</Name>
<ModelType>T2</ModelType>
</Model>
</document>
<document type="2"> <!-- Document 3 -->
<configuration>
<attribute_info>
<attribute>Value similar to Document 2
</attribute>
<attribute>Value similar to Document 2
</attribute>
</attribute_info>
</configuration>
<Model>
<Name>Service</Name>
<ModelType>T2</ModelType>
</Model>
</document>
</data></MasterData>
Файл XSL
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:str="http://exslt.org/strings">
<xsl:template match="/">
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Excel Output Doc Mockup">
<Table ss:ExpandedColumnCount="100" ss:ExpandedRowCount="600" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="42" ss:DefaultRowHeight="11.25">
<xsl:for-each select="/MasterData/data/document[(normalize-space(./@type)='2') and (normalize-space(./Model/Name)='Service' and normalize-space(./Model/ModelType)='T2')]">
<xsl:variable name="shift" select="str:split(./configuration/attribute_info/attribute[@name='shift'],'$,$')" />
<xsl:variable name="hrs" select="str:split(./configuration/attribute_info/attribute[@name='hrs'],'$,$')" />
<xsl:for-each select="str:split(./configuration/attribute_info/attribute[@name='serviceType'],'$,$')">
<Row ss:AutoFitHeight="0">
<Cell ss:Index="1">
<Data ss:Type="String">
<xsl:value-of select="." />
</Data>
</Cell>
<Cell ss:Index="2">
<Data ss:Type="String">
<xsl:value-of select="$shift[position()]"/>
</Data>
</Cell>
<Cell ss:Index="3">
<Data ss:Type="String">
<xsl:value-of select="$hrs[position()]" />
</Data>
</Cell>
</Row>
</xsl:for-each>
</xsl:for-each>
</table>
</Worksheet>
</Workbook>
</xsl:template></xsl:stylesheet>
Ожидаемый результат в книге / листе Excel
Столбец1 Столбец2 Столбец3
Заменить 6 1
Стандартный Заменить 7 2
Определить Заменить 82.5
Замена бара 9 4
Замена стержня и пластины 1
Замена втулки 2
Замена втулки - стандарт 6
Замена втулки- Конкретный 6
Но я получаю результат как
Столбец1 Столбец2 Столбец3
Заменить 1 2
Стандартный Заменить 2,5 4
Специальная замена 1 2
Замена бара 6 6
Замена стержня и пластины
Замена втулки
Замена втулки - стандарт
Bush Replace - Specific
Кажется, что я получаю значения самой последней разделенной строки, хотя я ссылаюсь на соответствующие разделенные строки, используя их resпеременные.