Hi team,
I am trying to unparse XML to EDI with Smooks 2, using a custom dfdl for edifact. With that custom dfdl, I can unparse from xml to edi with daffodil 3.1.0 with no issues.
INFO 2021-12-16 11:21:11,457 [org.smooks.examples.xml2edi.Main.main()] org.smooks.cartridges.dfdl.DataProcessorFactory: Compiling and caching DFDL schema...
ERROR 2021-12-16 11:21:13,892 [org.smooks.examples.xml2edi.Main.main()] org.smooks.delivery.interceptor.ExceptionInterceptor: Error in org.smooks.delivery.interceptor.WriterInterceptor while processing visitAfter SAX-NG event
org.smooks.SmooksException: Unparse Error: Illegal content for simple element:MeasurementUnitCode
Schema context: MeasurementUnitCode Location line 991 column 26 in file:/tmp/smooks-xml-to-edi/target/classes/edi-to-xml-mapping.dfdl.xsd
at org.smooks.cartridges.dfdl.unparser.DfdlUnparser.visitAfter(DfdlUnparser.java:83) ~[smooks-dfdl-cartridge-1.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.EventInterceptor$6.invoke(EventInterceptor.java:193) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.EventInterceptor$6.invoke(EventInterceptor.java:190) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:86) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.EventInterceptor.visitAfter(EventInterceptor.java:190) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.TextConsumerInterceptor$2.invoke(TextConsumerInterceptor.java:83) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.TextConsumerInterceptor$2.invoke(TextConsumerInterceptor.java:80) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:86) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.TextConsumerInterceptor.visitAfter(TextConsumerInterceptor.java:80) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.WriterInterceptor$1.invoke(WriterInterceptor.java:176) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.WriterInterceptor$1.invoke(WriterInterceptor.java:173) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:86) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.WriterInterceptor.intercept(WriterInterceptor.java:256) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.WriterInterceptor.visitAfter(WriterInterceptor.java:173) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.ExceptionInterceptor$6.invoke(ExceptionInterceptor.java:175) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.ExceptionInterceptor$6.invoke(ExceptionInterceptor.java:172) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:86) ~[smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:226) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.ExceptionInterceptor.visitAfter(ExceptionInterceptor.java:172) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.StaticProxyInterceptor$6.invoke(StaticProxyInterceptor.java:164) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.StaticProxyInterceptor$6.invoke(StaticProxyInterceptor.java:161) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:86) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.interceptor.StaticProxyInterceptor.visitAfter(StaticProxyInterceptor.java:161) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.sax.ng.SaxNgHandler.visitAfter(SaxNgHandler.java:323) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.sax.ng.SaxNgHandler.endElement(SaxNgHandler.java:222) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.SmooksContentHandler.endElement(SmooksContentHandler.java:123) [smooks-core-2.0.0-M2.jar:?]
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) [xercesImpl-2.12.0.jar:?]
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source) [xercesImpl-2.12.0.jar:2.12.0]
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) [xercesImpl-2.12.0.jar:2.12.0]
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) [xercesImpl-2.12.0.jar:2.12.0]
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) [xercesImpl-2.12.0.jar:?]
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) [xercesImpl-2.12.0.jar:?]
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) [xercesImpl-2.12.0.jar:?]
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) [xercesImpl-2.12.0.jar:?]
at org.smooks.delivery.sax.ng.SaxNgParser.parse(SaxNgParser.java:92) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:114) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:89) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.Smooks._filter(Smooks.java:561) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.Smooks.filterSource(Smooks.java:517) [smooks-core-2.0.0-M2.jar:?]
at org.smooks.examples.xml2edi.Main.runSmooksTransform(Main.java:82) [classes/:?]
at org.smooks.examples.xml2edi.Main.main(Main.java:99) [classes/:?]
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:254) [exec-maven-plugin-3.0.0.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_281]
Caused by: org.apache.daffodil.processors.unparsers.UnparseError: Unparse Error: Illegal content for simple element:MeasurementUnitCode
All fields are string type with maxLength, I don't see what is wrong with that.
XML fragment:
<Measurements>
<MeasurementAttributeCode>WT</MeasurementAttributeCode>
<MeasuredAttributeCode>T</MeasuredAttributeCode>
<ValueRange>
<MeasurementUnitCode>KGM</MeasurementUnitCode>
<MeasurementValue>4000</MeasurementValue>
</ValueRange>
</Measurements>
Schema fragment:
<xsd:complexType name="MEA">
<xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
<xsd:element name="MeasurementAttributeCode" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MeasuredAttributeCode" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ValueRange" minOccurs="0">
<xsd:complexType>
<xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
<xsd:element name="MeasurementUnitCode" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MeasurementValue" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="18"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
Any ideas about what could be wrong? Any dependency version I should try? I am using 2.0.0-M2 for the smooks edi cartridge dependency, tried a couple more versions with no success.
Thanks