Hi Graydon,

You are right, Java imposes various limits on the XML parser that get stricter 
and more fine granular with every version of the language [1].

Currently, there are two ways to tackle this:

• The properties can be overwritten when starting BaseX on command line, for 
example:

  -Djdk.xml.maxGeneralEntitySizeLimit=0 -Djdk.xml.totalEntitySizeLimit=0

The properties can be added to the BaseX start scripts or assigned to the 
BASEX_JVM environment variable before starting BaseX.

• You can use our internal BaseX XML parser, either by enabling the INTPARSE 
option, or by switching to the »Parsing« tab in the »Create Database« dialog of 
the GUI and activating the corresponding checkbox.

In a future version of BaseX, we may introduce a global option to invalidate 
the limits. As BaseX is a tool for XML experts, we could also invalidate the 
Java options by default. Feedback from everyone is welcome.

Best,
Christian

[1] 
https://docs.oracle.com/en/java/javase/25/docs/api/java.xml/module-summary.html#Properties

________________________________
Von: Graydon Saunders via BaseX-Talk <[email protected]>
Gesendet: Dienstag, 6. Januar 2026 18:11
An: BaseX <[email protected]>
Betreff: [basex-talk] the right way to respond to JAXP00010001

Hello (and Happy New Year!)

I'm on Linux (Fedora) using BaseX 12.1 and OpenJDK Runtime Environment 
(Red_Hat-25.0.1.0.8-3) (build 25.0.1+8)

I've got some data, which I want BaseX to load by the individual document using 
the doc() function.

On one of these documents I get a parsing failure that reports JAXP00010001; if 
I look that up, I find 
https://www.oracle.com/java/technologies/javase/24-relnote-issues.html which 
says this limit changed (from a traditional larger number) to 2500, so now the 
error text is

JAXP00010001: The parser has encountered more than "2500" entity expansions in 
this document; this is the limit imposed by the JDK

It's a large file and I can't do anything about that part, nor can I do 
anything about the number of entity references these files happen to have when 
I get them. (In this particular case, a bit more than five thousand.) The 
Oracle page lists a bunch of options for how to set a different entity 
expansion limit.

In context of BaseX, what's the right way to adjust the entity expansion limit 
(in my case, generally the BaseX GUI) so these files will parse?

Thanks!
Graydon

Reply via email to