2013-11-14 4 views
-1

У меня есть объект XML, который передается в XSL трансформатор, даты, которая передается в длинном представленииКак XSLT длинный формат дату

<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 даты например, «1383264000000», и я хочу, чтобы это было похоже на «1 июня 2013 года». Однако при запуске трансформации появляется ошибка ниже.

Exception in thread "main" java.lang.VerifyError: (class: customernotify, method: template$dot$0 signature: (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) Expecting to find double on stack at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) at java.lang.Class.getConstructor0(Class.java:2699) at java.lang.Class.newInstance0(Class.java:326) at java.lang.Class.newInstance(Class.java:308) at com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.getTransletInstance(TemplatesImpl.java:364) at com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.newTransformer(TemplatesImpl.java:394) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:649) at com.enernoc.pe.applications.scheduledbatch.nomapproval.xmlprocessing.GenerateEmailPreview.generate(GenerateEmailPreview.java:30) at com.enernoc.pe.applications.scheduledbatch.nomapproval.CustomerEmailGenerator.generateHtml(CustomerEmailGenerator.java:65) at com.enernoc.pe.applications.scheduledbatch.nomapproval.EmailPreviewerPlugin$EmailPreviewProcessor.process(EmailPreviewerPlugin.java:169) at com.enernoc.pe.applications.scheduledbatch.nomapproval.EmailPreviewerPlugin$EmailPreviewProcessor.process(EmailPreviewerPlugin.java:1) at com.enernoc.pe.applications.scheduledbatch.nomapproval.DqCheckProcessor.process(DqCheckProcessor.java:93) at com.enernoc.pe.applications.scheduledbatch.nomapproval.DqCheckProcessor.process(DqCheckProcessor.java:1) at com.enernoc.pe.applications.scheduledbatch.nomapproval.Salesforce.call(Salesforce.java:87) at com.enernoc.pe.applications.scheduledbatch.nomapproval.EmailPreviewerPlugin$MyCallable.call(EmailPreviewerPlugin.java:102) at com.enernoc.pe.applications.scheduledbatch.nomapproval.EmailPreviewerPlugin$MyCallable.call(EmailPreviewerPlugin.java:1) at com.enernoc.pe.pipeline.push.framework.AbstractPlugin.call(AbstractPlugin.java:44) at com.enernoc.pe.pipeline.push.framework.AbstractPlugin.call(AbstractPlugin.java:1) at com.enernoc.pe.applications.scheduledbatch.Main.main(Main.java:196)

ответ

0

Попробуйте что-то вроде

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

тест против '' не защищает вас от NaN значений.

+0

Я получал ошибку в строка, просто новая из долгого значения не работает из XSL, и мне приходится ее экстернализировать, чтобы заставить ее работать –

Смежные вопросы