【问题标题】:How to XSLT format long date如何 XSLT 格式化长日期
【发布时间】:2013-11-27 15:59:17
【问题描述】:

我有一个传递给 XSL 转换器的 XML 对象, 通过的日期以长表示形式

<xsl:variable name="nominationEffectiveDate" select="NomApprovalCase/nominationEffectiveDate"></xsl:variable>
<xsl:choose>
   <xsl:when test="$nominationEffectiveDate !=''">
      <xsl:value-of select="java:format(java:java.text.SimpleDateFormat.new('MMM, dd yyyy'), java:java.util.Date.new(number($nominationEffectiveDate)))" />
   </xsl:when>
   <xsl:otherwise>
      <xsl:text><![CDATA[&nbsp;]]>the start of the demand response period<![CDATA[&nbsp;]]></xsl:text>
   </xsl:otherwise>
</xsl:choose>

我添加了我的 XSL 的 sn-p 日期,例如“1383264000000”,我希望它类似于“2013 年 6 月 1 日”。但是,运行转换会出现以下错误。

线程“main”java.lang.VerifyError 中的异常:(类:customernotify,方法:template$dot$0 签名:(Lcom/sun/org/apache/xalan/internal/xsltc/DOM;Lcom/sun/org /apache/xml/internal/dtm/DTMAxisIterator;Lcom/sun/org/apache/xml/internal/serializer/SerializationHandler;I)V) 期望在堆栈上找到双精度 在 java.lang.Class.getDeclaredConstructors0(本机方法) 在 java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 在 java.lang.Class.getConstructor0(Class.java:2699) 在 java.lang.Class.newInstance0(Class.java:326) 在 java.lang.Class.newInstance(Class.java:308) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.getTransletInstance(TemplatesImpl.java:364) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.newTransformer(TemplatesImpl.java:394) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:649) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.xmlprocessing.GenerateEmailPreview.generate(GenerateEmailPreview.java:30) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.CustomerEmailGenerator.generateHtml(CustomerEmailGenerator.java:65) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.EmailPreviewerPlugin$EmailPreviewProcessor.process(EmailPreviewerPlugin.java:169) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.EmailPreviewerPlugin$EmailPreviewProcessor.process(EmailPreviewerPlugin.java:1) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.DqCheckProcessor.process(DqCheckProcessor.java:93) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.DqCheckProcessor.process(DqCheckProcessor.java:1) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.Salesforce.call(Salesforce.java:87) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.EmailPreviewerPlugin$MyCallable.call(EmailPreviewerPlugin.java:102) 在 com.enernoc.pe.applications.scheduldbatch.nomapproval.EmailPreviewerPlugin$MyCallable.call(EmailPreviewerPlugin.java:1) 在 com.enernoc.pe.pipeline.push.framework.AbstractPlugin.call(AbstractPlugin.java:44) 在 com.enernoc.pe.pipeline.push.framework.AbstractPlugin.call(AbstractPlugin.java:1) 在 com.enernoc.pe.applications.scheduldbatch.Main.main(Main.java:196)

【问题讨论】:

    标签: java xml xslt date-format


    【解决方案1】:

    试试类似的东西

    <xsl:when test="number($nominationEffectiveDate)">
        <!-- ... -->
    </xsl:when>
    

    针对'' 的测试并不能保护您免受NaN 值的影响。

    【讨论】:

    • 我在 行,只是新的 long 值在 XSL 中不起作用,我必须将其外部化才能使其正常工作
    • @KhaledAbdel-Salam:您能否提供代码的工作副本。我也遇到了同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多