Как часть моего преобразования XML (с использованием XSL) я создаю атрибут для расположения схемы, чтобы можно было проверить результат преобразования.Тем не менее, поскольку я пытаюсь выполнить это как самостоятельный тест, я хочу иметь возможность установить соответствующий атрибут / значение для расположения схемы, чтобы она была отключена от моего CLASSPATH.
После небольшого поиска в Googleпробовал различные атрибуты schemaLocation, последняя попытка:
..
<xsl:attribute name="xsi:external-noNamespaceSchemaLocation">
<xsl:value-of select="$schemaLocation"/>
</xsl:attribute>
..
, которая после преобразования приводит к:
<?xml version="1.0" encoding="UTF-8"?>
<emrException
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:external-noNamespaceSchemaLocation="emrException_1_0.xsd">
..
<!-- more well-formed XML -->
</emrException>
Я дважды проверил, что мой файл emrException_1_0.xsd явнов CLASSPATH при запуске валидатора.Это валидатор DOM, и я использую Xerces 2.9.1 / Xalan 2.7.1, результат, который я получаю:
Caused by: org.xml.sax.SAXParseException:
cvc-elt.1: Cannot find the declaration of element 'emrException'.
Однако, когда я переключаюсь на использование схемы, где читается XSD-файлвне файловой системы или внешнего URL-адреса, тогда валидатор работает весело.
Как я могу получить XSD для считывания с моего CLASSPATH?