Objects with metadata elements named 'order' cannot be saved due to a validation error when object has a derivate

Description

This is caused by the

derobjects/derobject/order

element of the mycoreobject itself.

Example of affected mycoreobject:

<mycoreobject xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="datamodel-subproject.xsd" ID="col_subproject_00000003" version="2020.11" label="col_subproject_00000003"> <structure> <parents class="MCRMetaLinkID"> <parent inherited="0" xlink:type="locator" xlink:href="col_majorproject_00000002" /> </parents> <children class="MCRMetaLinkID"> <child inherited="0" xlink:type="locator" xlink:title="col_film_00000003" xlink:href="col_film_00000003" /> </children> <derobjects class="MCRMetaEnrichedLinkID"> <derobject inherited="0" xlink:type="locator" xlink:href="col_derivate_00000062"> <order>1</order> <maindoc>2012-08-16-_DSC0427.jpg</maindoc> </derobject> </derobjects> </structure> <metadata> <def.title class="MCRMetaLangText" heritable="true" notinherit="false"> <title xml:lang="de" inherited="0" form="plain">Neues Teilprojekt</title> <title xml:lang="en" inherited="0" form="plain">foo</title> </def.title> <def.date class="MCRMetaISO8601Date" heritable="true" notinherit="false"> <date type="publicDomain" inherited="0">2021-07-01T00:00:00.000Z</date> </def.date> <def.species class="MCRMetaClassification" heritable="true" notinherit="false"> <species inherited="0" classid="subproject_class_species" categid="Cane-toad" /> </def.species> <def.clade class="MCRMetaClassification" heritable="true" notinherit="false"> <clade inherited="0" classid="subproject_class_clade" categid="Amphibians" /> </def.clade> <def.entitylink class="MCRMetaLinkID" heritable="true" notinherit="false"> <entitylink inherited="0" xlink:type="locator" xlink:title="Musterman, Max" xlink:href="col_person_00000002" type="res" /> </def.entitylink> <def.breed class="MCRMetaClassification" heritable="true" notinherit="false"> <breed inherited="0" classid="subproject_class_breed" categid="Fancy-rat" /> </def.breed> <def.order class="MCRMetaClassification" heritable="true" notinherit="false"> <order inherited="0" classid="subproject_class_order" categid="Hoatzins" /> </def.order> </metadata> <service> <servdates class="MCRMetaISO8601Date"> <servdate type="modifydate" inherited="0">2021-01-29T11:04:24.551Z</servdate> <servdate type="createdate" inherited="0">2021-01-29T10:53:24.866Z</servdate> </servdates> <servflags class="MCRMetaLangText"> <servflag type="createdby" inherited="0" form="plain">administrator</servflag> <servflag type="modifiedby" inherited="0" form="plain">administrator</servflag> </servflags> <servstates class="MCRMetaClassification"> <servstate inherited="0" classid="state" categid="submitted" /> </servstates> </service> </mycoreobject>

 

Stacktrace:

Caused by: org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 16; cvc-complex-type.4: Attribute 'categid' must appear on element 'order'. at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204) at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284) at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:511) at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3587) at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.addDefaultAttributes(XMLSchemaValidator.java:3220) at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2290) at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:829) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2725) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:541) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824) at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635) at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:217) at org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1065) at org.mycore.common.xml.MCRXMLParserImpl.parseXML(MCRXMLParserImpl.java:82) at org.mycore.datamodel.metadata.MCRBase.setFromXML(MCRBase.java:183) at org.mycore.datamodel.metadata.MCRObject.<init>(MCRObject.java:85) at org.mycore.datamodel.metadata.validator.MCREditorOutValidator.generateValidMyCoReObject(MCREditorOutValidator.java:285) at org.mycore.frontend.servlets.persistence.MCRPersistenceHelper.getMCRObject(MCRPersistenceHelper.java:122) at org.mycore.frontend.servlets.persistence.MCRUpdateObjectServlet.updateObject(MCRUpdateObjectServlet.java:90) at org.mycore.frontend.servlets.persistence.MCRUpdateObjectServlet.handlePersistenceOperation(MCRUpdateObjectServlet.java:55) at org.mycore.frontend.servlets.persistence.MCRPersistenceServlet.think(MCRPersistenceServlet.java:75) at org.mycore.frontend.servlets.MCRServlet.processThinkPhase(MCRServlet.java:419) at org.mycore.frontend.servlets.MCRServlet.doGetPost(MCRServlet.java:305) at org.mycore.frontend.servlets.MCRServlet.doPost(MCRServlet.java:180) ... 56 more

Environment

None

Attachments

1
datamodel-subproject.xsd
5 years ago

Activity

Robert Stephan
February 9, 2021 at 12:58 PM

I’ll try to use named complex types

Thomas Scheffler
January 29, 2021 at 11:49 AM

Can you post datamodel-subproject.xsd, too? mycore-base seems to allow any elements below derobject:

<xs:element name="derobject"> <xs:complexType> <xs:sequence> <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax" /> </xs:sequence> <xs:attribute name="inherited" use="required" type="xs:integer" fixed="0" /> <xs:attributeGroup ref="supportedXlinks" /> </xs:complexType> </xs:element>
Fixed

Details

Assignee

Reporter

Components

Sprint

Add sprint

Fix versions

Priority

Created January 29, 2021 at 11:19 AM
Updated March 29, 2022 at 12:45 PM
Resolved June 10, 2021 at 3:23 PM