DDMS 4.0.1 Parsing Fails


(Imported from Google Code)
(Original author: ariel@arielvalentin.com)
<b>What steps will reproduce the problem?</b>
1. Attempt to parse a document with missing subjectCoverage using DDMS version 4.0.1

DDMSVersion version = DDMSVersion.getVersionFor(&quot;4.0.1&quot;
final DDMSReader ddmsReader = new DDMSReader(version);

This block of code raises a InvalidDDMSException
nu.xom.ValidityException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ddms:security'. One of '{&quot;urn:us:mil:ces:metadata:ddms:4&quot;:creator, &quot;urn:us:mil:ces:metadata:ddms:4&quot;ublisher, &quot;urn:us:mil:ces:metadata:ddms:4&quot;:contributor, &quot;urn:us:mil:ces:metadata:ddms:4&quot;ointOfContact, &quot;urn:us:mil:ces:metadata:ddms:4&quot;:format, &quot;urn:us:mil:ces:metadata:ddms:4&quot;:subjectCoverage}' is expected. at line 53, column 130

<b>What is the expected output? What do you see instead?</b>

DDMS 4.0.1 does not require subjectCoverage it should just parse the document without errors

<b>What version of the product are you using? On what operating system?</b>
DDMSence 2.2.0 on Java 6 CentOS 6.4

<b>Please provide any additional information below.</b>




Brian Uri
December 31, 2014, 1:27 PM

Hi Ariel,

Here's what I know:

  • DDMS is not bundled with IC-TDF 2, so there is no forked version to worry about here.

  • IC-IRM depends on DDMS. Looking at IRM V9 from 2013, the bundled DDMS 5.0 schemas are identical to the published DDMS 5.0 schemas, so there is no forked version here either.

  • Because DDMS was not funded in 2014, I do not have a good view into anything that's happened more recently. Therefore, if there is a newer version of these specs, I am unaware of any potential forks.

Brian Uri
December 31, 2014, 12:59 PM

(Original author: ariel@arielvalentin.com)
Do you happen to know if IC also have a forked version of DDMS 5.0?

Brian Uri
May 13, 2014, 6:33 PM

(Original author: ariel@arielvalentin.com)
Another good point. OK, I think I am going to have to make a decision with respect to the path to take from here.
Thanks for the clarification and the help.

Brian Uri
May 13, 2014, 6:15 PM

Unfortunately, DDMS 4.1 was published with the same XML namespace as DDMS 4.0.1, because the DDMS team expected 4.1 to fully supercede 4.0.1. DDMS 4.1 was the only version of the spec to reuse an XML namespace.

There is no programmatic way to look at a DDMS instance and tell whether it was intended for 4.0.1 or 4.1, so there is no way to include the 4.0.1 schemas alongside the 4.1 schemas. The way that DDMSence currently handles this:

  • Existing metacards with this shared XML namespace are validated against DDMS 4.1.

  • If a metacard built in DDMSence contains elements that are new in 4.1, a warning will be generated: "The XXXX component in this DDMS component was introduced in DDMS 4.1, and will prevent this XML instance from being understood by DDMS 4.0.1 systems."

Brian Uri
May 13, 2014, 6:07 PM

(Original author: ariel@arielvalentin.com)

Thanks for getting back to me so quickly! I was unaware of all of the history and deviation from the official specification.

I agree that you should not deviate from the official specification, but it would be helpful to me if you could also include 4.0.1 in the package since I do not see it in the 2.2.0 release. I would like to explore the differences with our sample data sets to get a better idea of what workarounds we'll have to come up with.



Brian Uri


Brian Uri