0

我正在使用由 JAVA 方法调用的 XSL,我试图通过给出类的绝对路径来修复它,但我认为它不会起作用,因为我没有找到使用绝对类路径在 XSL 中调用方法的任何地方所以我试图保持在服务器环境中。这是我的代码,我已经给出了类路径,我也调用了方法..但没有得到正确的输出。这是调用方法的正确方法吗?

<xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xalan="http://xml.apache.org/xalan"
        xmlns:datetime="java:com.ibm.date"
        exclude-result-prefixes="xalan"
        version="1.0">

  <xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="no" />
  <xsl:strip-space elements="*" />

  <xsl:template name="RootToAcknowledgeInventoryRequirement">
    <xsl:param name="Root" />
    <xsl:variable name="PromiseHeader" select="$Root/PromiseHeader" />
    <xsl:variable name="today" select="datetime:dateNow()" />
    <xsl:variable name="OrganizationCode">
      <xsl:value-of select="$PromiseHeader/@OrganizationCode" />
    </xsl:variable>

    <_inv:AcknowledgeInventoryRequirement releaseID="">
      <_wcf:ApplicationArea>
        <oa:CreationDateTime xsi:type="udt:DateTimeType">
          <xsl:value-of select="datetime:dateNow()" />
        </oa:CreationDateTime>
      </_wcf:ApplicationArea>
4

1 回答 1

0

正如您提到的 XLAN 处理器,它的版本是 XSLT 1.0。

因此,默认情况下,它不具备任何为其带来当前日期时间值的日期时间函数。

XSLT 2.0 支持

<xsl:value-of  select="current-dateTime()"/>
<xsl:value-of  select="current-date()"/>
<xsl:value-of  select="current-time()"/>

你应该使用 Machael Kay 的 Saxon 最新版本。

现在,为了解决问题,EXSLT 已成为良好的实践:

从此链接下载代码,复制date.xsl到您的 xsl 文件位置。将其导入您的 xsl。

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

    <xsl:import href="date.xsl" />

    <xsl:template match="//root">
       <xsl:value-of select="date:date-time()"/>
    </xsl:template>
</xsl:stylesheet>

解决方案 2:将日期时间值作为参数传递给 XSL。在需要时将其用作变量。

于 2013-02-01T07:48:45.500 回答