2009-07-02 8 views
1

У меня есть файл XSLT 1.0 для преобразования XML-файла с использованием XSLT 1.0. Он отлично работает с IE 6.0, Firefox 3.0.11. Однако PHP 5.2.6 XSL XSLTProcessor (предоставляющий XSLT 1.0) и Qt C++ QXmlQuery (предоставляющий только XSLT 2.0) дает пустой вывод.Преобразование XSLT 1.0 в XSLT 2.0

Я имею в виду 2-мя способами:

  1. Преобразование его в XSLT 2.0 (предпочтительно)

  2. Extract Firefox часть для разбора.

Спецификации W3C, похоже, долго меня переваривают, и документы для преобразования не такие большие.

+2

Вы редактировали свой заголовок в "... [closed]" вместо фактического * закрытия * вопрос ?! Это не так, как должно работать. Найдите ссылку «закрыть», если вы должны закрыть вопрос. – Tomalak

ответ

2

XSLT должен быть в значительной степени совместим с обратной стороной, хотя, очевидно, есть вещи, которые вы можете использовать в XSLT 2.0, которые значительно облегчают жизнь.

Похоже, что у вас что-то не так в XSLT, но, поскольку вы не предоставляете ничего для нас, смотреть на это трудно сказать.

Я бы порекомендовал овладеть Kernow-for-Saxon - это отличный интерфейс для тестирования XSLT (намного лучше, чем пытаться использовать Firefox или IE), и если у вас есть ошибки в XSLT, то Saxon является одним из лучших XSLT-процессоры для предоставления хороших ошибок, чтобы попытаться определить причину.

http://kernowforsaxon.sourceforge.net/

Я ничего либо PHP или процессоров Qt не знаю, но возможно есть ошибки в них, которые не обрабатывает ваш XSLT правильно.

+0

Привет samjudson, я загружу позже сегодня файлы XML и XSLT, чтобы вы могли проверить. Спасибо! – Viet

1

Если вся спецификация слишком длинная (???), начните с раздела Changes.

Кроме того, XSLTProcessor - это всего лишь обертка вокруг libxslt и вряд ли будет разорвать действительное преобразование XSLT 1.0. Интересно, есть ли что-то напуганное в отношении вашей трансформации, которое вы можете исправить, не перейдя на 2.0, или если что-то не так с развертыванием XSLTProcessor. Можете ли вы успешно применить другие преобразования?

+0

Благодарим вас за ответ. Я использую XPath в совпадающих тегах. Я пытался с IE и Firefox, они работали, но я не работал с другими инструментами, как я уже говорил. Я пытаюсь настроить инструмент W3School. Пока это не работает. – Viet

+1

@Viet: Мое предположение также заключается в том, что вы делаете что-то неправильно. Помимо того, что процессоры XSLT 2.0 отлично выполняют код 1.0, я думаю, ваше время лучше потратить на поиск ошибки, вместо того, чтобы читать спецификацию XSLT 2.0. – Tomalak

+0

Я обнаружил, что Tidy преобразовал HTML не в строгий XML, поэтому в XSLT-парсерах, которые я перечислял, не дают результата. Вместо этого я использую Mozilla nsIXSLTProcessor. Вход HTML не контролируется мной, поэтому я ничего не могу с этим поделать. Спасибо, в любом случае. – Viet

0

После много Хардворка и болезненного тестирования, я нашел ответ сам:

  1. Действительного XSLT 1.0 файл также действительный XSLT 1.0 файл
  2. PHP и Qt C++ не удались, как я имел <html xslmn="..."> вместо только <html> (которые IE & FF смогли успешно преобразовать). Для простоты я удалил <!DOCTYPE и <attributes тега <html>.

Спасибо всем за участие в обсуждении.

+0

Проблема с вашим первым комментарием .. Пожалуйста, исправьте. –

Смежные вопросы