From 3cf0b5078e5077d53a6587d18fff3f72cbe66164 Mon Sep 17 00:00:00 2001 From: Thomas Scheffler Date: Thu, 16 Jul 2026 21:43:58 +0200 Subject: [PATCH] MCR-3769 Preserve XEditor variables in XPath validation with relevant-if --- .../frontend/xeditor/validation/MCRXPathTestValidator.java | 2 +- .../xeditor/validation/MCRXEditorValidatorTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mycore-xeditor/src/main/java/org/mycore/frontend/xeditor/validation/MCRXPathTestValidator.java b/mycore-xeditor/src/main/java/org/mycore/frontend/xeditor/validation/MCRXPathTestValidator.java index 88cba67d25..26181b4510 100644 --- a/mycore-xeditor/src/main/java/org/mycore/frontend/xeditor/validation/MCRXPathTestValidator.java +++ b/mycore-xeditor/src/main/java/org/mycore/frontend/xeditor/validation/MCRXPathTestValidator.java @@ -61,11 +61,11 @@ public boolean validateBinding(MCRValidationResults results, MCRBinding binding) } MCRBinding nodeBinding = new MCRBinding(i + 1, binding); + MCRXPathEvaluator evaluator = nodeBinding.getXPathEvaluator(); if (!isRelevant(nodeBinding)) { continue; } - MCRXPathEvaluator evaluator = nodeBinding.getXPathEvaluator(); boolean result = evaluator.test(xPathExpression); nodeBinding.detach(); diff --git a/mycore-xeditor/src/test/java/org/mycore/frontend/xeditor/validation/MCRXEditorValidatorTest.java b/mycore-xeditor/src/test/java/org/mycore/frontend/xeditor/validation/MCRXEditorValidatorTest.java index 0954cd28ce..91c4bd5dbd 100644 --- a/mycore-xeditor/src/test/java/org/mycore/frontend/xeditor/validation/MCRXEditorValidatorTest.java +++ b/mycore-xeditor/src/test/java/org/mycore/frontend/xeditor/validation/MCRXEditorValidatorTest.java @@ -376,6 +376,12 @@ public void testXPathTestRelevantIfRule() throws JDOMException, JaxenException { assertFalse(session.getValidator().isValid()); checkResult(session, "/document/title", MCRValidationResults.MARKER_ERROR); + session = buildSession("document[title='Foo']"); + session.getVariables().put("expectedTitle", new Element("expectedTitle").setText("Foo")); + addRule(session, "/document/title", "test", "text()=$expectedTitle", "relevant-if", "true()"); + assertTrue(session.getValidator().isValid()); + checkResult(session, "/document/title", MCRValidationResults.MARKER_SUCCESS); + } @Test