Reputation: 13
org.xml.sax.SAXParseException; lineNumber: 4268; columnNumber: 51; cos-nonambig: "http://camel.apache.org/schema/spring":onFallback and "http://camel.apache.org/schema/spring":onFallback (or elements from their substitution group) violate "Unique Particle Attribution". During validation against this schema, ambiguity would be created for those two particles.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.xs.XSConstraints.reportSchemaError(Unknown Source)
at org.apache.xerces.impl.xs.XSConstraints.fullSchemaChecking(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
at org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(Unknown Source)
I'm getting this error when trying to create a new schema from camel-spring.xsd after updated Camel version to 4.0.4 and Java 17
The code is this one, and the error happens in the last line:
import com.google.common.io.Resources;
import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import java.io.ByteArrayInputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class Camel
{
public static void main( String[] args ) throws Exception
{
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
List<Source> tmp = new ArrayList();
String loc = "camel-spring.xsd";
URL url = Resources.getResource(loc);
byte[] bytes = Resources.toByteArray(url);
StreamSource src = new StreamSource(new ByteArrayInputStream(bytes));
tmp.add(src);
schemaFactory.newSchema((Source[]) tmp.toArray(new Source[tmp.size()]));
}
}
Have you ever seen this error?
I have seen that up camel-spring.xsd 4.x (https://camel.apache.org/schema/spring/) on circuitBreakerDefinition element has two "onFallBack" elements and this is the error. When I comment one of those, I don't get an error. But I can't modify the jar, do you know if there is a way to get the schema from the xsd Camel 4.x?
Upvotes: 1
Views: 132
Reputation: 12817
You could try setting this feature to false:
schemaFactory.setFeature("http://apache.org/xml/features/validation/schema-full-checking", false);
This (very old) documentation mentions that "unique particle attribution" is one of the checks turned off.
Upvotes: 0
Reputation: 9463
A 'org.xml.sax.SAXParseException' usually indicates there is a problem parsing data as XML. It happens in a line where you load a schema - but hey: A schema is also some XML document. Hence the problem lies either how you load the data, or the data itself that you load (you only show your code).
Looking at the full error message I assume the problem is in your schema at line number 4268. Look at the 'onFallback' or similar elements.
Upvotes: 0