Я применяю таблицу стилей XSLT к журналу чата XML и хочу отображать имя болтовни только в первый раз, когда оно появляется в последовательных группах сообщений, чтобы несколько строк «группировались» по болтовне в каждой группе сообщений.Пример иллюстрирует это лучше.
Я хочу перейти от этого:
<Cthon98> hey, if you type in your pw, it will show as stars
<Cthon98> ********* see!
<AzureDiamond> hunter2
<AzureDiamond> doesnt look like stars to me
К этому:
<Cthon98> hey, if you type in your pw, it will show as stars
********* see!
<AzureDiamond> hunter2
doesnt look like stars to me
Мой XSL (который повторяется один раз для строки чата) это:
<xsl:template match="User">
<!-- add a comma before all but the first user -->
<xsl:if test="position() != 1">, </xsl:if>
<!-- Pseudocode:
1. Set variable to name of current chatter
2. Set variable to name of previous line's chatter
3. If current chatter == previous chatter, don't display name
4. If current chatter != previous chatter, display name
-->
<!-- This displays the name -->
<xsl:value-of select="@FriendlyName"/>
</xsl:template>
Может ли кто-нибудь помочь мне преобразовать этот псевдокод?Большое спасибо!
Редактировать: входной XML по сути повторяет следующую структуру сообщения:
<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='MessageLog.xsl'?>
<Log FirstSessionID="1" LastSessionID="20">
<Message>
<From><User FriendlyName="chatter1"/></From>
<To><User FriendlyName="chatter2"/></To>
<Text>hey</Text>
</Message>
<Message>
<From><User FriendlyName="chatter2"/></From>
<To><User FriendlyName="chatter1"/></To>
<Text>hey!</Text>
</Message>
</Log>