У меня есть список <segment>
, который может встречаться 2-4 раза внутри <list>
.Как я могу получить доступ к индексам сегментов для анализа их как строки csv
?
Пример:
<root>
<list>
<segment>
<origin>new york</origin>
</segment>
<segment>
<origin>san francisco</origin>
</segment>
<segment>
<origin>London</origin>
</segment>
<segment>
<origin>Berlin</origin>
</segment>
</list>
<list>
<segment>
<origin>new york</origin>
</segment>
<segment>
<origin>Berlin</origin>
</segment>
</list>
</root>
Моя цель: извлечь средние сегменты или оставить пустым, если их нетсуществует.Желаемый результат будет:
sanfrancisco;london //both segments 2 + 3 filled
'';'' //both segments 2 + 3 empty
Таким образом, первый и последний сегмент всегда следует игнорировать.Все сегменты между ними должны извлекать тег <origin>
.Если между ними нет сегментов, и следует добавить пустое поле.
<xsl:template match="root">
<xsl:for-each select="//list//segment">
<!-- of course this is wrong, because it selects just all origins. -->
<xsl:value-of select=".//origin" separator=";"/>
</xsl:for-each>
</xsl:template>
Вопрос: как я могу перевести следующее в xslt (псевдокод):
if (segment.size <= 2) write '';''
if (segment.size <= 3) write segment[1].origin;''
if (segment.size <= 4) write segment[1].origin;segment[2].origin