Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSLT трансформация -> невалидный HTML 
V
    Опции темы
pgood
Дата 21.7.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 7.3.2005

Репутация: нет
Всего: нет



Проблема следующая:
Есть XSLT шаблон, например такой

Код

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>

<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="css/default.css" rel="stylesheet" type="text/css" />
</head>
<body>
...
</body>
</html>
</xsl:template>

</xsl:stylesheet>


(суть в том, что в xml:output указан доктайп XHTML 1.1)

В файле получяемом после трансформации, пустые тэги вроде:
Код

<link href="css/default.css" rel="stylesheet" type="text/css" />

превращаются в
Код

<link href="css/default.css" rel="stylesheet" type="text/css">


или атрибут selected="selected" в тэге option превращается просто в selected (без значения).

Подскажите пожалуйста, почему получаемый HTML не соответствует указанному доктайпу и как это можно вылечить?

P. S. для XSLT трансформации я пользуюсь PHP 5.2.5 и PHP классом XSLTProcessor 

Это сообщение отредактировал(а) pgood - 21.7.2008, 13:45
PM MAIL   Вверх
gta4kv
Дата 21.7.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



эээ. Причем здесь PHP?
PM MAIL   Вверх
pgood
Дата 21.7.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 7.3.2005

Репутация: нет
Всего: нет



Извините, забыл упомянуть, для XSLT трансформации я пользуюсь PHP 5.2.5 и PHP классом XSLTProcessor
PM MAIL   Вверх
pgood
Дата 21.7.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 7.3.2005

Репутация: нет
Всего: нет



Насколько я понял, PHP не обращает внимания на атрибуты doctype-public и doctype-system тэга xsl:output.
Если подумать, не стоило ожидать от PHP того, что он полезет по урлу указанному в doctype-system, выкачает оттуда DTD и будет парсить HTML в соответствии с доктайпом. smile

Решение нашлось следующее:
В xsl:output изменить metod="html" на method="xml" и добавить omit-xml-declaration="yes"
По желанию установить форматирование кода атрибутом indent="yes"

Появились проблемы:
пустые тэги вида <script></script> стал писать как <script /> (конечно javascript после этого работать перестает)

Лечится так:
<script><xsl:comment /></script>
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0707 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.