Есть моя проблема.Анализ XML с использованием документа(), который включает ссылки в XSLT
У меня есть файл XML с помощью ссылки и в том числе другой файл XML
XML-файл (разобран XSL):
<?xml version="1.0" encoding="utf-8"?>
<!ENTITY % references SYSTEM "myref.ref">
<test>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="file2.XML"/>
</test>
file2.XML:
<?xml version="1.0" encoding="utf-8"?>
<action>&testref;</action>
myref.ref:
<!ENTITY testref 'cool ref there'>
XSL:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="//test"/>
</xsl:template>
<xsl:template match="test">
<xsl:for-each select="document('file2.XML')//action">
[...]
</xsl:template>
Тогда у меня есть XSL, которые используют функцию документа(), чтобы открыть file2.XML, который включает в себя ссылки (ссылки в myref.ref).
Таким образом, я получаю сообщение об ошибке: «Объект« refentity »ссылался, но не был объявлен, когда я использую документ (« file2.XML »).
Как мой myref.ref также будет использоваться, когда я открываю другой XML с помощью документа()?
Спасибо.
Какой XSLT-процессор вы используете, и (что еще более важно), какой базовый анализатор XML вы используете? Недействительные синтаксические анализаторы, такие как expat, не могут анализировать внешние объекты, и даже при проверке парсеров такие функции иногда по умолчанию отключены по соображениям безопасности. –
Я пробовал как с Xalan, так и с Saxon XSLT-процессором, и у меня такая же ошибка. Я не использую какой-либо основной синтаксический анализатор XML в процессе преобразования, проблема должна быть в XSL. Внешний XML-файл правильно читается. Если у меня нет ссылок на него, он работает нормально. – Rems
Учтите, что вы делитесь своим XML-файлом и XSLT-файлом с нами. –