sandialabs / SpecUtils

A library for opening, manipulating, and exporting gamma spectral files
GNU Lesser General Public License v2.1
27 stars 9 forks source link

n42 xml file created by SpecUtils is not valid according to xsd #12

Open arichnad opened 1 year ago

arichnad commented 1 year ago

Hello,

issue-input.txt issue-output.txt (files added as .txt extension due to issue restriction)

I run the following valid 2012 n42 xml file through SpecUtils, and it creates a 2012 n42 xml that fails schema validation.

$ xmlstarlet val --err --xsd SpecUtils/unit_tests/test_data/schema/n42.xsd issue-input.xml
issue-input.xml - valid

It creates two errors. xmlstarlet val --err --xsd SpecUtils/unit_tests/test_data/schema/n42.xsd issue-output.xml

  1. An InterSpec definition needs to be added to the xml header:
22.27: Namespace prefix InterSpec on DetectorType is not defined
            <InterSpec:DetectorType>RS-701</InterSpec:DetectorType>
  1. And, it also creates a RadInstrementState that lacks a ref:
41.22: Element '{http://physics.nist.gov/N42/2011/N42}RadInstrumentState': The attribute 'radInstrumentInformationReference' is required but missing.

Using this:

SpecFile specFile;
if(!specFile.load_N42_from_data(inputContent)) {
    return;
}
specFile.write_to_file(outputFilename, SaveSpectrumAsType::N42_2012);

Thanks,

arichnad

wcjohns commented 1 year ago

Hi @arichnad ,

Thanks for pointing these issues out!

I just pushed a fixes for the second issue in a2bc41368eaec810778008690e527a3444929340. While checking this fix out, I also noticed RelativeLocation elements are lacking a required Origin child element; I wouldnt be surprised if there were a few more issues like this - its been a few years since I've validated the output XML.

The first issue is related to https://github.com/sandialabs/InterSpec/issues/14, and looks to require defining an xsd file.

I'll bump defining this xsd file up in priority on my TODO list, but cant promise a date when they will be fixed by.

thanks again, -will