Index: org/exolab/castor/xml/UnmarshalHandler.java =================================================================== --- org/exolab/castor/xml/UnmarshalHandler.java (Revision 6793) +++ org/exolab/castor/xml/UnmarshalHandler.java (Arbeitskopie) @@ -2931,7 +2931,7 @@ if (classDesc.getIdentity() == descriptor) { try { - _idResolver.bind(attValue, parent); + _idResolver.bind(attValue, parent, _validate); } catch (ValidationException e) { throw new SAXException("Duplicate ID " + attValue + " encountered.", e); } Index: org/exolab/castor/xml/IDResolverImpl.java =================================================================== --- org/exolab/castor/xml/IDResolverImpl.java (Revision 6793) +++ org/exolab/castor/xml/IDResolverImpl.java (Arbeitskopie) @@ -26,16 +26,18 @@ * Object identifier * @param object * Object being identified by ID + * @param _validate * @throws ValidationException * If an ID is used more than once. */ - void bind(final String id, final Object object) throws ValidationException { + void bind(final String id, final Object object, final boolean isValidating) + throws ValidationException { if (id.equals("") || id == null) { throw new ValidationException ("Invalid (empty) ID value encountered"); } - if (_idReferences.containsKey(id)) { + if (isValidating && _idReferences.containsKey(id)) { if (!(id.equals("org.exolab.castor.mapping.MapItem") || id.equals("HIGH-LOW"))) { throw new ValidationException("Duplicate ID " + id + " encountered"); Index: org/castor/mapping/MappingUnmarshaller.java =================================================================== --- org/castor/mapping/MappingUnmarshaller.java (Revision 6793) +++ org/castor/mapping/MappingUnmarshaller.java (Arbeitskopie) @@ -205,6 +205,7 @@ try { // Load the specificed mapping source Unmarshaller unm = new Unmarshaller(MappingRoot.class); + unm.setValidation(false); unm.setEntityResolver(resolver); unm.setClassLoader(Mapping.class.getClassLoader()); unm.setIDResolver(_idResolver);