XSLT: для каждого узла преобразования, если были найдены оба A = 2 и A = 1, сделайте это еще - PullRequest
0 голосов
/ 19 марта 2010

Пример 1:

<time>
   <timestamp>01:00</timestamp>
   <event>arrived<event>
</time>
<time>
   <timestamp>02:00</timestamp>
   <event>left<event>
</time>

Пример 2:

<time>
   <timestamp>02:00</timestamp>
   <event>left<event>
</time>

XSLT должен сделать:

  • ДЛЯ КАЖДОГО узла DO:
  • ЕСЛИ событие = наступило ТО, то установить тип события = назначение
  • ЕСЛИ событие = слева найдено, И событие = прибыло найдено, ТО затем установил новый тип узла = левый конечный объект.

XSLT применяется к примеру 1:

<event>
   <time>01:00</time>
   <type>atdestination</type>
<event>
<event>
   <time>02:00</time>
   <type>leftdestination</type>
<event>

XSLT применяется к примеру 2:

<event>
   <time>02:00</time>
   <type>left</type>
<event>

1 Ответ

2 голосов
/ 19 марта 2010
<xsl:template match="time">
  <event>
    <xsl:apply-templates select="*" />
  </event>
</xsl:template>

<xsl:template match="timestamp">
  <time><xsl:value-of select="." /></time>
</xsl:template>

<xsl:template match="type">
  <type>
    <xsl:choose>
      <xsl:when test=".='arrived'">
        <xsl:text>atdestination</xsl:text>
      </xsl:when>
      <xsl:when test=".='left' and ../../event[type='arrived']">
        <xsl:text>leftdestination</xsl:text>
      </xsl:when>
      <xsl:when test=".='left' and not(../../event[type='arrived'])">
        <xsl:text>left</xsl:text>
      </xsl:when>
      <xsl:otherwise>
        <xsl:text>undefined</xsl:text>
      </xsl:otherwise>
    </xsl:choose>
  </type>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...