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

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? - генерация "как будто их нет" меня тоже вполне устроит.
 

slach

Новичок
Скорее всего проблема не в php
а в обновившейся версии libxsl
попробуйте скомпилить с более старой версией (если получится)
 

FB3

Новичок
Ну как вариант резать регэкспом или с помощью DOM в xslt файле этот лишний атрибут, а потом уже накладывать трансформацию получившимся файлом.
 
Сверху