[ 
https://issues.apache.org/jira/browse/DAFFODIL-2808?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17712677#comment-17712677
 ] 

Mike Beckerle commented on DAFFODIL-2808:
-----------------------------------------

Is this only a validation error when doing Daffodil's Limited validation? I'm 
going to assume so. This is Daffodil's check, not Xerces check. 

I believe when we set daffodil validation "on" it does BOTH the limited 
daffodil-code-base validation and feeds the output XML to Xerces for separate 
validation. 

Specifically, if we turn off all Daffodil validation, but a separate Xerces 
validator validates the XML, then I assume this would not be an issue.

But that's only true if nobody is calling dfdl:checkConstraints which invokes 
daffodil's facet validation (and max/min occurs validation? - tbd)

In your scenario, is checkConstraints being used? If so, can you avoid that? 
(I.e., is that a usable workaround?)

> Incorrect Validation Error on Optional Element with Children
> ------------------------------------------------------------
>
>                 Key: DAFFODIL-2808
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2808
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End
>    Affects Versions: 3.5.0
>            Reporter: Olabusayo Kilo
>            Priority: Major
>         Attachments: optionElementTest.scala, optionalElement.tdml
>
>
> When you have an optional element with children element, daffodil calculates 
> the number of occurrences it has by looking at the number of children it has, 
> rather than calculating the number of times it appears. This results in an 
> validation error saying the element occurred NUM_OF_CHILDREN_TIME when it was 
> expected.
> Attached is a TDML test that shows this incorrect validation error
> I narrowed down the  error to 
> src/main/scala/org/apache/daffodil/runtime1/processors/parsers/SequenceChildBases.scala
>  line 543 in endArray
> {code:scala}
>         val occurrence = {
>           val maybeLastChild = state.infoset.maybeLastChild
>           if (maybeLastChild.isEmpty || maybeLastChild.get.erd != erd)
>             0
>           else
>             maybeLastChild.get.numChildren
>         }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to