Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > XSLT и HTML5


Автор: Rigel 8.3.2012, 22:43
Имеется сайт, сделанный целиком на XML-XSLT (сборка на клиенте), нужно вставить туда ( http://www.smoliy.ru/ufonewsarchive.php?m=367&p=0 ) видео как альтернативу флешу. Беру тег <video> и пишу такую конструкцию:
Код

<video width="300" height="200" controls="controls">
<source src="http://www.smoliy.ru/bnr/sec/2/439.mp4" type='video/mp4'/>
<source src="http://www.smoliy.ru/bnr/sec/2/439.webm" type='video/webm'/>
Здесь вставляется флеш
</video>

и она работает - до встречи с IE 9, в котором тоже появляется флеш - просто потому что в примере на HTML в первой строке файла написано
Код

<!doctype html>

Но как указать его для XHTML? Особенно если учесть, что тип HTML туда явно не годится (а иного по-моему и нет), а использовать отладочный код нельзя, потому что его не поддерживает Мозилла?
Решение предполагалось очевидное - вставить IFRAME.
Слелал страницу на HTML:
Код

<!doctype html>
<html>
<?
require_once "path.php";
require_once $modules.'/bas.php';
require_once $modules.'/vars.php';
    $result = mysql_query("SELECT `id`, `class`, `pat`, `nam`, `s_alt`,`ord`,`nolrg` FROM `".$_GET['table']."` WHERE `id` = '".(int)$_GET['id']."'");
        $row = mysql_fetch_assoc($result);
        
?>
<body>
<video width="<?=$_GET['w'];?>" height="<?=$_GET['h'];?>" controls="controls">
<source src="<?=$GeneralUrl;?>/<?=$row['pat'];?>/2/<?=$_GET['i'];?>.mp4" type="video/mp4"/>
<source src="<?=$GeneralUrl;?>/<?=$row['pat'];?>/2/<?=$_GET['i'];?>.webm" type="video/webm"/>
<!--<?=$row['nam'];?>-->
</video>
</body>
</html>

 Вставил.
Код

            $temp .= '<iframe height="'.$ImgArr[7][$i].'" width="'.$ImgArr[6][$i].'" marginheight="0" marginwidth="0" scrolling="no"  ';
            $temp .= " src=\"$GeneralUrl/service/video.php?table=$CurrentTbl&amp;id=".$CurrentId."&amp;i=".$oArr[1]."&amp;h=".$ImgArr[7][$i]."&amp;w=".$ImgArr[6][$i]."\" ";
            $temp .= '></iframe>';


 Не работает. То есть, пока запускаю содержимое фрейма ОТДЕЛЬНО ( http://www.smoliy.ru/service/video.php?table=engine_img_news&id=446&i=439&h=300&w=400 ) - оно работает. С теми же переменными вывожу через ифрейм - не работает.
Как быть-то? Можно это решить не тем так другим способом?

Автор: diadiavova 9.3.2012, 11:57
Rigel, честно говоря я не понял вопроса. Что именно надо, выводить доктайп как для html5 или для xhtml. У них ведь разные доктайпы. Какой будет выведен средствами xslt зависит от элемента output. Для html5 помимо простого доктайпа можно еще вывести вот такой
Код

<!DOCTYPE html SYSTEM "about:legacy-compat">
Это как раз для случаев, когда генератор кода не поддерживает простой доктайп
http://www.w3.org/TR/html5/syntax.html#syntax-doctype

Собственно элемент аутпут будет выглядеть например так
Код

 <xsl:output method="html" indent="yes" media-type="text/html" doctype-system="about:legacy-compat"/>

Автор: Rigel 9.3.2012, 13:14
Действительно, такой doctype решает проблему, спасибо.

Автор: SelenIT 10.3.2012, 19:45
Цитата(diadiavova @  9.3.2012,  11:57 Найти цитируемый пост)
У них ведь разные доктайпы.
Цитата(diadiavova @  9.3.2012,  11:57 Найти цитируемый пост)
Это как раз для случаев, когда генератор кода не поддерживает простой доктайп
http://www.w3.org/TR/html5/syntax.html#syntax-doctype

Из приведенной ссылки однозначно следует, что для HTML5 вполне допустимы доктайпы XHTML 1.0 Strict и XHTML 1.1 smile И валидатор http://html5.validator.nu/?doc=http%3A%2F%2Fcss-live.ru%2FPortfolio%2FArchery%2Fmain-page.html&showsource=yes ("немодный" доктайп — не ошибка, а лишь предупреждение)!

Еще немножко http://css-live.ru/articles/glavnyj-sekret-html5/.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)