From 59da794ddbe8d76a29b3c373dd16baf82c7a7e55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraj=20Hren=C3=A1k?= Date: Mon, 11 Dec 2023 15:48:08 +0100 Subject: [PATCH] feat(validation): gets schema also from xsi:schemaLocation --- src/php/validator/XsdValidation.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/php/validator/XsdValidation.php b/src/php/validator/XsdValidation.php index 9f886f7..3e9f909 100644 --- a/src/php/validator/XsdValidation.php +++ b/src/php/validator/XsdValidation.php @@ -129,13 +129,24 @@ private function getSchemaValidationFile(\DOMDocument $document) } // @codeCoverageIgnoreEnd - $attribute = $firstChild->getAttribute('xsi:noNamespaceSchemaLocation'); + $schemaLocation = $firstChild->getAttribute('xsi:schemaLocation'); + $noNamespaceSchemaLocation = $firstChild->getAttribute('xsi:noNamespaceSchemaLocation'); - if (empty($attribute)) { + if ($schemaLocation === '' && $noNamespaceSchemaLocation === '') { return false; } - return $attribute; + if ($noNamespaceSchemaLocation !== '') { + return $noNamespaceSchemaLocation; + } + + $parts = explode(' ', $schemaLocation); + + if (count($parts) === 2) { + return trim($parts[1]); + } + + return false; } /**