Skip to content

Problem generating HTML with multiple dates #88

Description

@doc-yh

Hello,

I'm encountering an issue when generating the HTML associated with this ContractAwardNotice using the following command:

java -jar .\target\eforms-notice-viewer-0.10.0-app.jar -f fr .\can.xml
<?xml version="1.0" encoding="UTF-8"?>
<ContractAwardNotice xmlns="urn:oasis:names:specification:ubl:schema:xsd:ContractAwardNotice-2"
                     xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
                     xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
                     xmlns:efac="http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1"
                     xmlns:efbc="http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1"
                     xmlns:efext="http://data.europa.eu/p27/eforms-ubl-extensions/1"
                     xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ext:UBLExtensions>
        <ext:UBLExtension>
            <ext:ExtensionContent>
                <efext:EformsExtension>
                    <efac:NoticeResult>
                        <efac:LotResult>
                            <cbc:ID schemeName="result">RES-0001</cbc:ID>
                            <cbc:TenderResultCode listName="winner-selection-status">selec-w</cbc:TenderResultCode>
                            <efac:LotTender>
                                <cbc:ID>TEN-0001</cbc:ID>
                            </efac:LotTender>
                            <efac:SettledContract>
                                <cbc:ID>CON-0001</cbc:ID>
                            </efac:SettledContract>
                        </efac:LotResult>
                        <efac:LotTender>
                            <cbc:ID schemeName="tender">TEN-0001</cbc:ID>
                            <efac:TenderingParty>
                                <cbc:ID>TPA-0001</cbc:ID>
                            </efac:TenderingParty>
                            <efac:TenderReference>
                                <cbc:ID>5</cbc:ID>
                            </efac:TenderReference>
                        </efac:LotTender>
                        <efac:SettledContract>
                            <cbc:ID schemeName="contract">CON-0001</cbc:ID>
                            <cbc:AwardDate>2024-01-12+02:00</cbc:AwardDate>
                            <cbc:IssueDate>2024-01-29+02:00</cbc:IssueDate>
                            <efac:LotTender>
                                <cbc:ID>TEN-0001</cbc:ID>
                            </efac:LotTender>
                        </efac:SettledContract>
                        <efac:SettledContract>
                            <cbc:ID schemeName="contract">CON-0002</cbc:ID>
                            <cbc:AwardDate>2024-01-12+02:00</cbc:AwardDate>
                            <cbc:IssueDate>2024-01-29+02:00</cbc:IssueDate>
                            <efac:LotTender>
                                <cbc:ID>TEN-0001</cbc:ID>
                            </efac:LotTender>
                        </efac:SettledContract>
                        <efac:TenderingParty>
                            <cbc:ID schemeName="tendering-party">TPA-0001</cbc:ID>
                            <efac:Tenderer>
                                <cbc:ID>ORG</cbc:ID>
                            </efac:Tenderer>
                        </efac:TenderingParty>
                    </efac:NoticeResult>
                    <efac:NoticeSubType>
                        <cbc:SubTypeCode listName="notice-subtype">29</cbc:SubTypeCode>
                    </efac:NoticeSubType>
                    <efac:Organizations>
                        <efac:Organization>
                            <efac:Company>
                                <cac:PartyIdentification>
                                    <cbc:ID schemeName="organization">ORG</cbc:ID>
                                </cac:PartyIdentification>
                                <cac:PartyName>
                                    <cbc:Name languageID="FRA">XXX</cbc:Name>
                                </cac:PartyName>
                            </efac:Company>
                        </efac:Organization>
                    </efac:Organizations>
                </efext:EformsExtension>
            </ext:ExtensionContent>
        </ext:UBLExtension>
    </ext:UBLExtensions>
    <cbc:CustomizationID>eforms-sdk-1.9</cbc:CustomizationID>
    <cbc:NoticeLanguageCode listName="language">FRA</cbc:NoticeLanguageCode>
</ContractAwardNotice>

I've tried to simplify the XML as much as possible to reproduce the bug. It seems the bug occurs when we have multiple dates at the same time:

<xsl:value-of separator=", " select="format-date(for $tender2 in ./normalize-space(text()) return ../../../efac:SettledContract/cbc:AwardDate[../efac:LotTender/cbc:ID/normalize-space(text()) = $tender2]/xs:date(text()), '[D01]/[M01]/[Y0001]')"/>

The error StackTrace:

18:07:03.584 [main] DEBUG e.e.t.e.v.generator.XslGenerator - Successfully created XSL for SDK version [1.9].
18:07:03.783 [main] DEBUG e.e.t.e.v.generator.HtmlGenerator - Writing HTML for view ID [29] to file [build\output-html\29-fr.html]
18:07:03.784 [main] DEBUG e.e.t.e.v.generator.HtmlGenerator - Creating XSL transformer factory
18:07:04.025 [main] DEBUG e.e.t.e.v.generator.HtmlGenerator - Successfully created XSL transformer factory
18:07:04.026 [main] DEBUG e.e.t.e.v.generator.HtmlGenerator - Creating XSL transformer for language [fr] and view ID [29]
18:07:06.481 [main] DEBUG e.e.t.e.v.generator.HtmlGenerator - Successfully created XSL transformer for language [fr] and view ID [29]
18:07:06.481 [main] DEBUG e.e.t.e.v.generator.HtmlGenerator - Applying XSL transformation for language [fr] and view ID [29]
18:07:07.633 [main] ERROR e.e.ted.eforms.viewer.Application - Error executing the application with arguments [[fr, .\24-12190_XML_EFORM.xml]]. Please see the logs.
18:07:07.635 [main] DEBUG e.e.ted.eforms.viewer.Application - Exception thrown:
net.sf.saxon.trans.XPathException: A sequence of more than one item is not allowed as the first argument of fn:format-date() (xs:date("2024-01-12+02:00"), xs:date("2024-01-12+02:00")) 
	at net.sf.saxon.expr.Expression.typeError(Expression.java:1477)
	at net.sf.saxon.expr.CardinalityChecker.evaluateItem(CardinalityChecker.java:296)
	at net.sf.saxon.expr.parser.Evaluator$OptionalItem.evaluate(Evaluator.java:201)
	at net.sf.saxon.expr.SystemFunctionCall.evaluateArguments(SystemFunctionCall.java:469)
	at net.sf.saxon.expr.FunctionCall.iterate(FunctionCall.java:560)
	at net.sf.saxon.expr.Expression.process(Expression.java:948)
	at net.sf.saxon.expr.SystemFunctionCall.process(SystemFunctionCall.java:496)
	at net.sf.saxon.expr.instruct.ValueOf.processLeavingTail(ValueOf.java:345)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:755)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:266)
	at net.sf.saxon.expr.instruct.CallTemplate.process(CallTemplate.java:384)
	at net.sf.saxon.expr.instruct.ForEach.lambda$processLeavingTail$0(ForEach.java:531)
	at net.sf.saxon.om.SequenceTool.supply(SequenceTool.java:147)
	at net.sf.saxon.expr.instruct.ForEach.processLeavingTail(ForEach.java:531)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:755)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:266)
	at net.sf.saxon.expr.instruct.CallTemplate.process(CallTemplate.java:384)
	at net.sf.saxon.expr.instruct.ForEach.lambda$processLeavingTail$0(ForEach.java:531)
	at net.sf.saxon.om.SequenceTool.supply(SequenceTool.java:147)
	at net.sf.saxon.expr.instruct.ForEach.processLeavingTail(ForEach.java:531)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:755)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:266)
	at net.sf.saxon.expr.instruct.CallTemplate.process(CallTemplate.java:384)
	at net.sf.saxon.expr.instruct.ForEach.lambda$processLeavingTail$0(ForEach.java:531)
	at net.sf.saxon.om.SequenceTool.supply(SequenceTool.java:147)
	at net.sf.saxon.expr.instruct.ForEach.processLeavingTail(ForEach.java:531)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:755)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:266)
	at net.sf.saxon.expr.instruct.CallTemplate.process(CallTemplate.java:384)
	at net.sf.saxon.expr.instruct.ForEach.lambda$processLeavingTail$0(ForEach.java:531)
	at net.sf.saxon.om.SequenceTool.supply(SequenceTool.java:147)
	at net.sf.saxon.expr.instruct.ForEach.processLeavingTail(ForEach.java:531)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:755)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:266)
	at net.sf.saxon.expr.instruct.CallTemplate.process(CallTemplate.java:384)
	at net.sf.saxon.expr.instruct.ForEach.lambda$processLeavingTail$0(ForEach.java:531)
	at net.sf.saxon.om.SequenceTool.supply(SequenceTool.java:147)
	at net.sf.saxon.expr.instruct.ForEach.processLeavingTail(ForEach.java:531)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:755)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:266)
	at net.sf.saxon.expr.instruct.CallTemplate.process(CallTemplate.java:384)
	at net.sf.saxon.expr.instruct.ForEach.lambda$processLeavingTail$0(ForEach.java:531)
	at net.sf.saxon.om.SequenceTool.supply(SequenceTool.java:147)
	at net.sf.saxon.expr.instruct.ForEach.processLeavingTail(ForEach.java:531)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:755)
	at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:142)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:357)
	at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
	at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:392)
	at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:551)
	at net.sf.saxon.trans.XsltController.applyTemplates(XsltController.java:685)
	at net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:421)
	at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:353)
	at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:75)
	at eu.europa.ted.eforms.viewer.generator.HtmlGenerator.applyXslTransformation(HtmlGenerator.java:212)
	at eu.europa.ted.eforms.viewer.generator.HtmlGenerator.generateFile(HtmlGenerator.java:109)
	at eu.europa.ted.eforms.viewer.NoticeViewer.generateHtmlFile(NoticeViewer.java:131)
	at eu.europa.ted.eforms.viewer.NoticeViewer.generateHtmlFile(NoticeViewer.java:103)
	at eu.europa.ted.eforms.viewer.cli.CliCommand.call(CliCommand.java:113)
	at eu.europa.ted.eforms.viewer.cli.CliCommand.call(CliCommand.java:37)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at eu.europa.ted.eforms.viewer.Application.main(Application.java:35)

I also tested with the API from https://viewer.preview.ted.europa.eu/api/v2/notices/render and I have the same problem, the HTML is incomplete, although the API returns a 200.

Thanks in advance.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions