如何使用XSLTProcessor中的嵌入式EXSLT?

时间:2009-09-03 11:18:59

标签: php xslt exslt

XSLTProcessor :: hasExsltSupport()返回true。现在我需要修改什么才能使用它?

我有

<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:date="http://exslt.org/dates-and-times"
                extension-element-prefixes="date">

改变我正在尝试做的事情:

 <td>
   <xsl:value-of select="date:format-date(translate(property[@name='changedate']/value, ' ', 'T'), 'd.m.y h:i')" />
 </td>
  • property [@ name ='changedate'] / value是来自SQL DB的标记(yyyy-mm-dd hh:mm:ss)
  • 首先将该空格替换为T,以便exslt date-format understands it
  • 更改* yyyy-mm-dd *** T *** hh:mm:ss * - &gt; dd.mm.yyyy hh:mm

错误:

警告:XSLTProcessor :: transformToXml()[xsltprocessor.transformtoxml]:xmlXPathCompOpEval:绑定到未定义前缀格式的函数日期

PHP版本5.2.9

  • 启用XSL
  • libxslt Version 1.1.24
  • libxslt针对libxml版本2.6.32
  • 编译
  • 启用EXSLT
  • libexslt Version 1.1.24

2 个答案:

答案 0 :(得分:1)

我用它修好了。它将日期信息移动到正确的位置。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template name="FormatDate">
    <xsl:param name="DateTime" />

    <xsl:variable name="mo">
      <xsl:value-of select="substring($DateTime, 6, 2)" />
    </xsl:variable>

    <xsl:variable name="day">
      <xsl:value-of select="substring($DateTime, 9, 2)" />
    </xsl:variable>

    <xsl:variable name="year">
      <xsl:value-of select="substring($DateTime, 1, 4)" />
    </xsl:variable>

    <xsl:variable name="time">
      <xsl:value-of select="substring($DateTime, 12, 8)" />
    </xsl:variable>

    <xsl:variable name="hh">
      <xsl:value-of select="substring($time, 1, 2)" />
    </xsl:variable>

    <xsl:variable name="mm">
      <xsl:value-of select="substring($time, 4, 2)" />
    </xsl:variable>

    <xsl:value-of select="$day" />
    <xsl:value-of select="'.'" />
    <xsl:value-of select="$mo" />
    <xsl:value-of select="'.'" />
    <xsl:value-of select="$year" />

    <xsl:value-of select="' '" />

    <xsl:value-of select="$hh" />
    <xsl:value-of select="':'" />
    <xsl:value-of select="$mm" />

  </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:0)

“以下扩展功能不被认为是稳定的,不属于EXSLT的核心 - 日期和时代。声称支持EXSLT的处理器 - 日期和时代可能不支持这些功能。” - 这也适用于format-date