Неустранимая ошибка: temp_intermediate_result.xml:1:13: между целью инструкции обработки и данными требуется пробел. КакJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Неустранимая ошибка: temp_intermediate_result.xml:1:13: между целью инструкции обработки и данными требуется пробел. Как

Сообщение Anonymous »

Я занимаюсь разработкой API для проверки XML по схеме xsd, но столкнулся с ошибкой:

Код: Выделить всё

[Fatal Error] temp_intermediate_result.xml:1:13: White space is required between the processing instruction target and data.
Intermediate XML is not valid:
org.xml.sax.SAXParseException; systemId: file:/Users/ipkuzne3/MTSProjects/vpnm/SchematronValidation/temp_intermediate_result.xml; lineNumber: 1; columnNumber: 13; White space is required between the processing instruction target and data.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:206)
at com.example.schematronvalidation.Validator.SchematronValidatorAPI.extractSchematronRules(SchematronValidatorAPI.java:116)
at com.example.schematronvalidation.Validator.SchematronValidatorAPI.main(SchematronValidatorAPI.java:28)
java.lang.NullPointerException: Cannot invoke "String.getBytes(java.nio.charset.Charset)" because "
" is null
at com.helger.schematron.pure.SchematronResourcePure.fromString(SchematronResourcePure.java:530)
at com.example.schematronvalidation.Validator.SchematronValidatorAPI.validateXmlWithSchematron(SchematronValidatorAPI.java:150)
at com.example.schematronvalidation.Validator.SchematronValidatorAPI.main(SchematronValidatorAPI.java:31)
Мой код:

Код: Выделить всё

    private static String extractSchematronRules(String xsdFilePath) throws Exception {
// Абсолютные пути к XSLT файлам
String isoDSDLIncludePath = "src/main/resources/iso_dsdl_include.xsl";
String isoAbstractExpandPath = "src/main/resources/iso_abstract_expand.xsl";
String isoSVRLForXSLT2Path = "src/main/resources/iso_svrl_for_xslt2.xsl";
String skeletonPath = "src/main/resources/iso_schematron_skeleton_for_saxon.xsl";

// Проверка существования файлов
if (!new File(isoDSDLIncludePath).exists()) {
System.err.println("File not found: " + isoDSDLIncludePath);
return null;
}
if (!new File(isoAbstractExpandPath).exists()) {
System.err.println("File not found: " + isoAbstractExpandPath);
return null;
}
if (!new File(isoSVRLForXSLT2Path).exists()) {
System.err.println("File not found: " + isoSVRLForXSLT2Path);
return null;
}
if (!new File(skeletonPath).exists()) {
System.err.println("File not found: "  + skeletonPath);
return null;
}

// Преобразование XSD в Schematron
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document xsdDocument;
try (FileInputStream fis = new FileInputStream(xsdFilePath)) {
xsdDocument = builder.parse(fis);
}

TransformerFactory transformerFactory = TransformerFactory.newInstance();

// Применение первого XSLT преобразования
Transformer transformer = transformerFactory.newTransformer(new StreamSource(new FileInputStream(isoDSDLIncludePath)));
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(xsdDocument), new StreamResult(writer));
String intermediateResult = writer.toString();
//    System.out.println("Intermediate result after first transformation:");
//    System.out.println(intermediateResult);

// Применение второго XSLT преобразования
transformer = transformerFactory.newTransformer(new StreamSource(new FileInputStream(isoAbstractExpandPath)));
writer = new StringWriter();
try {
transformer.transform(new StreamSource(new StringReader(intermediateResult)), new StreamResult(writer));
intermediateResult = writer.toString();
System.out.println("Intermediate result after second transformation:");
System.out.println(intermediateResult);
} catch (Exception e) {
System.err.println("Error during second transformation:");
e.printStackTrace();
return null;
}

// Удаление всех переводов строк из промежуточного результата
intermediateResult = intermediateResult.replaceAll("\\s+", "");

// Очистка промежуточного XML-документа от некорректного контента
intermediateResult = intermediateResult.trim();
int rootEndIndex = intermediateResult.lastIndexOf("

Подробнее здесь: [url]https://stackoverflow.com/questions/79100876/fatal-error-temp-intermediate-result-xml113-white-space-is-required-between[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»