Seems like it would be useful for various error situations to exit with 
different non-zero error codes rather than scripts having to scrape the error 
message output to determine why. I'd suggest

1 - parse failure or unparse failure
2 - parse success, unparse success - but validation failure - basically 
secondary action failed
3 - schema compilation failed (SDE before runtime) either when parse/unparse, 
or save-parser
4 - internal error (e.g., daffodil bug caused abort)



________________________________
From: Steve Lawrence <slawre...@apache.org>
Sent: Friday, May 1, 2020 8:07 AM
To: users@daffodil.apache.org <users@daffodil.apache.org>
Subject: Re: Can Daffodil do just validation (not parse to XML/JSON)?

Good to know the right way to do it.

Note that a non-zero error code doesn't necessarily mean validation
failed. It just means that something went wrong. The same error code is
returned if the parse fails, or if you provide the wrong arguments, or
if you run out of memory, or there's a bug in Daffodil, etc.

On 5/1/20 7:47 AM, Costello, Roger L. wrote:
> The bat file wasn't quite right - it printed "Succeeded with no validation 
> errors" even when there were errors. Here's the correct way to do it:
> ---------------------------------------------
> @ECHO OFF
>
> call echo.
> call echo validate that instance.txt is a valid instance of the data format
> call ../../../dfdl/bin/daffodil.bat --version
> call ../../../dfdl/bin/daffodil.bat parse -s data-format.dfdl.xsd 
> --validate=on -I null instance.txt
>
> if %errorlevel% == 0 (
>     echo Validation Succeeded
> ) else (
>     echo Validation Failed
> )
> ---------------------------------------------
>
> /Roger
>
> -----Original Message-----
> From: Costello, Roger L. <coste...@mitre.org>
> Sent: Wednesday, April 29, 2020 2:20 PM
> To: users@daffodil.apache.org
> Subject: Re: Can Daffodil do just validation (not parse to XML/JSON)?
>
> Thank you Steve! That works great.
>
> Here is my validate.bat file (for those interested):
> ---------------------------------------------
> @ECHO OFF
>
> call echo.
> call echo validate that instance.txt is a valid instance of the data format
> call ../../../dfdl/bin/daffodil.bat --version
> call ../../../dfdl/bin/daffodil.bat parse -s data-format.dfdl.xsd 
> --validate=on -I null instance.txt
>
> if errorlevel 0 echo Succeeded with no validation errors 1>&2
> ---------------------------------------------
>
> /Roger
>
> -----Original Message-----
> From: Steve Lawrence <slawre...@apache.org>
> Sent: Wednesday, April 29, 2020 2:05 PM
> To: users@daffodil.apache.org
> Subject: [EXT] Re: Can Daffodil do just validation (not parse to XML/JSON)?
>
> Daffodil currently only outputs anything if there are problems (e.g.
> parse fails, validation error found). Silence means success.
>
> Daffodil does change the exit code depending on success/failure. Zero
> means success, 1 means failure.
>
> So if you want a success message, you can check the return code and
> print a message when it's zero. I'm not a Windows person, but I /think/
> adding this to the end of the bat file should work:
>
> if errorlevel 0 echo Succeeded with no validation errors 1>&2
>
>
>
> On 4/29/20 1:54 PM, Costello, Roger L. wrote:
>> Steve wrote:
>>
>>> This causes no infoset to be output
>>> when the parse completes.
>>
>> Eek! Deafening silence when the input conforms to the DFDL schema. Is there 
>> a way for Daffodil to generate a "valid" message when the input conforms to 
>> the DFDL schema? If not, perhaps it could be generated by the Windows bat 
>> file that I am using to run Daffodil; anyone know how to do that?
>>
>> /Roger
>>
>> -----Original Message-----
>> From: Steve Lawrence <slawre...@apache.org>
>> Sent: Monday, April 27, 2020 9:23 AM
>> To: users@daffodil.apache.org
>> Subject: [EXT] Re: Can Daffodil do just validation (not parse to XML/JSON)?
>>
>> Sort of. Daffodil will always create an internal infoset, which is
>> necessary for all the parsing and validation logic.
>>
>> And Daffodil will always follow the codepath to output that infoset when
>> the parse completes. However, in addition to outputting to XML or JSON
>> we have a special InfosetOutputter that doesn't actually output
>> anything, called the NullInfosetOutputter. To use this with the CLI, you
>> can add "-I null" to your arguments, e.g.
>>
>>   daffodil parse -s foo.dfdl.xsd --validate=on -I null inputData.bin
>>
>> This causes no infoset to be output when the parse completes. If there
>> were validation errors, they will be printed to stderr and the exit code
>> will be 1.
>>
>> On 4/27/20 9:07 AM, Costello, Roger L. wrote:
>>> Hi Folks,
>>>
>>> So, a standards organization created a description of a data format. They 
>>> expressed that description using DFDL.
>>>
>>> Then, I created an instance of the data format. Now I'd like to know if my 
>>> instance is valid, i.e., does it conform to the DFDL description that the 
>>> standards organization created. I'm not interested in outputting an XML or 
>>> JSON representation of the instance. I simply want to know if my instance 
>>> is valid. I want the output to be either yes it's valid, or no it's not 
>>> valid. (Analogously, an XML Schema validator can output a detailed infoset 
>>> or it can output simply valid/invalid) Can Daffodil do this?
>>>
>>> /Roger
>>>
>>
>

Reply via email to