У меня возникли проблемы с попыткой доступа к элементам за пределами моего цикла for-each. Вот мой XML.Доступ к внешнему элементу Внутри каждого для каждого
<JobList sta.time="151.879">
<Job T.number="7" T.identifier="Tool" T.holder.comment="Holder" sta.time="30.789" />
<Job T.number="5" T.identifier="Second" T.holder.comment="secholder" sta.time="35.567" />
<Job T.number="7" T.identifier="Tool" T.holder.comment="Holder" sta.time="4.778" />
<Job T.number="5" T.identifier="Second" T.holder.comment="secholder" sta.time="80.745" />
<Tool sta.time="116.312" number="5" />
<Tool sta.time="35.567" number="7" />
</JobList>
Вот выдержка из моего XSL
<table width="100%" border="1">
<thead>
<tr>
<td>Numbers</td>
<td>Description</td>
<td>Holder</td>
<td>Time</td>
</tr>
</thead>
<tbody>
<xsl:variable name="vsortOrder" select="//Job[@T.number]" />
<xsl:for-each select="//Job[not(@T.number=preceding::Job/@T.number)]">
<tr>
<td>
<xsl:value-of select="@T.number" />
</td>
<td>
<xsl:value-of select="@T.identifier" />
</td>
<td>
<xsl:value-of select="@T.holder.comment" />
</td>
</xsl:for-each>
<xsl:for-each select="//Tool[$vsortOrder/Job/@T.number]">
<td>
<xsl:value-of select="format-number(@sta.time div 60,'#0.00')" />
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
Желаемая Выход:
<div>
<h1>
<table width="100%" border="1">
<thead>
<tr>
<td>Numbers</td>
<td>Description</td>
<td>Holder</td>
<td>Time</td>
</tr>
</thead>
<tbody>
<tr>
<td>7</td>
<td>Tool</td>
<td>Holder</td>
<td>0.59</td>
</tr>
<tr>
<td>5</td>
<td>Second</td>
<td>secholder</td>
<td>1.93</td>
</tr>
</tbody>
</table>
</h1>
</div>
Я пытаюсь для отображения значения "//Tool/sta.time" В тот же порядок, что и @ T.number. Любые идеи, как я буду это делать/структурировать это?
Вероятно, это сочетание чрезмерного использования '//', слишком много 'xsl: for-each' и использование' previous :: 'вместо' previous-sibling :: '. Можете ли вы добавить свой желаемый результат, чтобы мы могли предложить некоторые изменения XSLT? –
Я добавил в желаемом результате. –
Ваш результат не имеет смысла: значение 'sta.time', связанное с' T.number = 7', равно 35.567, которое после деления на 60 дает 0.59. Тем не менее вы показываете 0.59 в строке, где T.number = 5. И откуда взялось значение 0.84? –