=== modified file 'src/com/goldencode/p2j/xml/XDocumentImpl.java'
--- old/src/com/goldencode/p2j/xml/XDocumentImpl.java	2025-02-21 09:47:53 +0000
+++ new/src/com/goldencode/p2j/xml/XDocumentImpl.java	2025-05-20 12:39:06 +0000
@@ -907,16 +907,26 @@
          try
          {
             longchar lc = (longchar) source;
+            logical retVal = new logical();
             String content = lc.toStringMessage();
             
             // TODO: I18N implications need to be handled, this is probably WRONG!
             ByteArrayInputStream bais = new ByteArrayInputStream(content.getBytes());
-            xdoc = XmlHelper.parse(bais,
-                                   validate.getValue(),
-                                   null,
-                                   !isSuppressNamespaceProcessing);
-            
-            return new logical(true);
+            String encoding = XmlHelper.readXMLEncoding(bais);
+            if (encoding == null)
+            {
+               encoding = I18nOps.getJavaCharset();
+            }
+            InputSource is = new InputSource(new InputStreamReader(bais, encoding));
+            is.setEncoding(encoding);
+
+            xdoc = XmlHelper.parse(is,
+                                   validate.booleanValue(), // unknown & false mean no validation
+                                   !isSuppressNamespaceProcessing,
+                                   retVal, // OUTPUT param mechanism
+                                   buildSchema());
+
+            return retVal;
          }
          catch (IOException | ParserConfigurationException e)
          {

