Вопрос по PHP, XSL, атрибуту xml:space и ошибкам при трансформации

  • Автор темы Автор темы zIs
  • Дата начала Дата начала

zIs

Новичок
Вопрос по PHP, XSL, атрибуту xml:space и ошибкам при трансформации

Всем доброго времени суток.
Подскажите, пожалуйста, в чем может быть дело.

Был PHP 5.2.x (не помню точно какой) обычной конфигурации, установленный вместе с ОС. Есть xsl-файл, в котором для многих template прописаны атрибуты xml:space="preserve". Во многих из этих темплейтов есть теги <xsl:choose>. Продвинутые xml-редакторы типа oXygen всегда ругались, когда видели конструкцию типа
Код:
<xsl:template match="..." xml:space="preserve">
  <xsl:choose>
    <xsl:when test="..."/>
  </xsl:choose>
</xsl:template>
и говорили, что правильно писать так (потому что preserve) :
Код:
<xsl:template match="..." xml:space="preserve"><xsl:choose><xsl:when test="..."/></xsl:choose>
</xsl:template>
Но старому PHP 5.2.x было пофигу на этот preserve, и он нормально проводил трансформацию. Генерация на Visual Basic с использованием Msxml2 тоже проходит нормально, но мне она не нужна в данном случае :). В один прекрасный момент PHP был обновлен до версии 5.3.0, и трансформация на РНР проходить перестала, выплевывая многочисленные ворнинги при виде вышеописанных конструкций, на которые всегда ругались редакторы. Установка PHP 5.2.7 ситуацию не спасла.

Самым простым решением было бы убрать из xsl атрибуты xml:space или правильно отформатировать темплейты, но в моем случае это не вариант (по личным обстоятельствам :). xsl-файл read-only ).

Поверхностный гуглинг по различиям в xslt-процессорах в php 5.2.x и 5.3 результатов не принес - вроде бы везде используется libxslt без вариантов. Про существенные изменения в версиях libxslt тоже ничего не нашел.

Собственно, вопрос: можно ли как-нибудь вернуться к трансформации старым способом (и что это был за способ)? Или может быть можно хотя бы подавить обработку атрибутов xml:space? - генерация "как будто их нет" меня тоже вполне устроит.
 
Скорее всего проблема не в php
а в обновившейся версии libxsl
попробуйте скомпилить с более старой версией (если получится)
 
Ну как вариант резать регэкспом или с помощью DOM в xslt файле этот лишний атрибут, а потом уже накладывать трансформацию получившимся файлом.
 
Сверху