Как сделать расчет на свидание - PullRequest
0 голосов
/ 10 сентября 2009

Я определил шаблон

<xsl:template match="DBE:Object" mode="TestTable">
   <table width="100%" border="0">
      <tr>
        Delivery Date 
        Latest Possible Order Date
      </tr>
      <xsl:apply-templates select="DBE:Attribute[@name='DeliveryDate']/DBE:Date/>
      <xsl:apply-templates select="DBE:Attribute[@name='LatestOrderDate']"/>
   </table>
</xsl:template>

Теперь я хочу вычислить "LatestOrderDate" = "DeliveryDate" - 42 дня. Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2009

«Пример кода»

<xsl:template match="DBE:Attribute[@name='TestTable']/DBE:Table/DBE:TableRow">
  <xsl:variable name="deliveryDate" select="string(DBE:TableData[position()=1])"/>
  <tr>
    <xsl:apply-templates mode="table" select="DBE:TableData">
      <xsl:with-param name="deliveryDate" select="$deliveryDate"/>
    </xsl:apply-templates>
  </tr>
</xsl:template>

<xsl:template mode="table" match="DBE:TableData">
  <xsl:param name="deliveryDate"/>
  <td>
    <xsl:value-of select="string(.)"/>
  </td>
  <xsl:if test="count(following-siblings::DBE:TableData)=0"> 
    <td>
      <xsl:value-of select="date:add( $deliveryDate, '-P42D')"/>
    </td>
  </xsl:if>
</xsl:template>
0 голосов
/ 11 сентября 2009

Вы должны быть немного более многословным. Если вам нужно придерживаться XSLT 1.0, я бы порекомендовал EXSLT http://www.exslt.org или примеры кода из первого издания Sal Mangano 'XSLT Cookbook', опубликованного O'Reilly, см. Www.oreilly.de/catalog/9780596003722/

Если я правильно понимаю, первый столбец содержит дату доставки, а lastOrderDate будет сохранен в новом правом столбце. Содержимое всех остальных столбцов будет дословно скопировано.

Идея состоит в том, чтобы сначала опросить содержимое первого столбца и сохранить его в переменной deliveryDate. После этого дочерние элементы TableData будут обработаны. При достижении последнего элемента TableData новая ячейка таблицы будет добавлена ​​в каждую строку таблицы, содержащую результат вычисленного lastOrderDate.

См. Пример кода в моем втором ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...