Версия Schematron, которую вы используете, не требует XSL 2.0, однако файл, который у вас есть, использует функции XSL 2.0.
XSLTProcessor
в PHP поддерживает только XSL 1.0. Поэтому некоторые функции, используемые в этом файле, недоступны, что приводит к сбою импорта.
Поскольку таблицу стилей не удалось импортировать, трансформация не может быть запущена.
Сообщение об ошибке
Предупреждение: XSLTProcessor::transformToXml(): с этим объектом не связана таблица стилей.
означает, что таблица стилей отсутствует. Не на диск или в память, а на трансформацию.
Это потому, что он имеет ошибки и, наконец, не может быть скомпилирован.
В вашем случае у вас есть файл XSL версии 2.0, но PHP поддерживает только функции 1.0. Также он использует переменные, которые не установлены (определены). Когда я загружаю данные вашего примера, я получаю следующие ошибки:
Предупреждение: XSLTProcessor::importStylesheet(): ошибка компиляции: файл CI-SIS_StructurationCommuneCDAr2.xsl, строка 13, таблица стилей элемента
Который:
version="2.0">
и объясняется следующим предупреждением:
Предупреждение: XSLTProcessor::importStylesheet(): xsl:version: поддерживаются только функции 1.0
Далее идет неопределенная переменная:
Предупреждение: XSLTProcessor::importStylesheet(): неопределенная переменная
Предупреждение: XSLTProcessor::importStylesheet(): ошибка компиляции: шаблон элемента строки CI-SIS_StructurationCommuneCDAr2.xsl 4974
который
<!--RULE -->
<xsl:template match="*[cda:templateId/@root = $templateObservationMedia]" priority="1000"
mode="M62">
которая является переменной $templateObservationMedia
и приводит к
Предупреждение: XSLTProcessor::importStylesheet(): не удалось скомпилировать предикат
Чтобы это заработало, вам нужно как минимум исправить эти проблемы. Поскольку использование переменной внутри шаблона соответствия не является XSLT 1.0, вам нужно как минимум обойти это. См. Несколько предупреждений PHP в XSLTProcessor::importStylesheet() для расширенного обсуждения проблемы переменной/соответствия.
person
hakre
schedule
05.03.2013