Thank you, Christian!

I can add those values to the start script and it works.

I wind up with
BASEX_JVM="${BASEX_JVM} -Djdk.xml.maxGeneralEntitySizeLimit=0 -Djdk.xml.totalEntitySizeLimit=0"
out of not being clear where the default values for BASEX_JVM originates these days. It does seem to be set before basexgui uses it.

As a note, I think I was already using the internal XML parser, though if I go look at the »Parsing« tab in the »Create Database« GUI, "Use internal XML parser" is both checked and greyed out, and "Use XML catalog file" has that value and is both checked and greyed out.  It's been like that for a while and I've been avoiding messing with it because I do have to use a catalog sometimes and this configuration has been working.

On Thu, Jan 8, 2026, at 04:13, Christian Grün wrote:
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