У меня есть этот XSL:
<xsl:for-each select="Name">
<xsl:if test="@Highlight='true'">
<td>
<xsl:variable name="iColumnIndex" select="position()+1" />
<xsl:value-of select="/SRRScheduleData/Columns/Heading[$iColumnIndex]"/>
<xsl:text>, </xsl:text>
</td>
</xsl:if>
</xsl:for-each>
XML-вопрос прост:
<Name Highlight="false" Conflict="false">Name 1</Name>
<Name Highlight="false" Conflict="false">Name 2</Name>
<Name Highlight="true" Conflict="false">Name 3</Name>
<Name Highlight="false" Conflict="false">Name 4</Name>
<Name Highlight="false" Conflict="false">Name 5</Name>
<Name Highlight="true" Conflict="false">Name 3</Name>
Столбцы XML выглядят так:
<Columns>
<Heading TextAlign="left" Width="11%">Date</Heading>
<Heading TextAlign="left" Width="11%">Hall Attendant</Heading>
<Heading TextAlign="left" Width="11%">Car Park</Heading>
<Heading TextAlign="left" Width="11%">Sound</Heading>
<Heading TextAlign="left" Width="11%">Platform</Heading>
<Heading TextAlign="left" Width="11%">Mic Left</Heading>
<Heading TextAlign="left" Width="11%">Mic Right</Heading>
<Heading TextAlign="left" Width="11%">Chairman</Heading>
<Heading TextAlign="left" Width="11%">Watchtower Reader</Heading>
</Columns>
Длявывод, который я надеялся получить для назначений:
Назначение X, Назначение Y
в той же строке с запятой, разделяющей их.
Но я получаю следующее:
Назначение X, Назначение Y,
Я понимаю, почему это происходит.Сначала я подумал об использовании <xsl:for-each select="Name[@Highlight='true']">
, а затем я мог бы использовать значение position()
и, если оно равно 1, просто вывести присвоение, в противном случае выведите ", Assignment".
Пока это будет работать,он падает, когда я пытаюсь отобразить описание назначения.Я должен использовать физическую позицию объекта имени в AssignmentRow
, чтобы найти правильное значение заголовка столбца.Если я использую фильтрацию с for-each, я потеряю эти позиции индекса столбца.
Вот почему я остановился на циклическом преобразовании всех имен, чтобы у меня было правильное значение позиции, которое можно использовать для поиска назначения.Компромисс в том, что я теперь не знаю, когда я нашел первый экземпляр, где Highlight установлен в true.
Так есть ли способ подавить эту запятую, если она присутствует?