Я пытаюсь преобразовать XSLT (серверная сторона, с php), и я хочу XHTML как вывод этого преобразования, потому что он является частью страницы XHTML. Если я используюXSLT Transform screw up <br/> теги
<xsl:output method="html" />
он генерирует код, действительный HTML-код, но имеет BR теги (без /), поэтому он не будет проверять, как XHTML;
Если я использую
<xsl:output method="xml" />
здесь приходит нелепость: выход имеет BR/теги, и собственно XML, но когда я положил его в страницу он принадлежит, некоторые закрывающие теги не исчезают нет очевидная причина.
Вот XSL файл http://hbxplayer.sf.net/test/mobile.xsl (это немного долго вставив его здесь)
РНР, что делает преобразование заключается в следующем:
ob_start();
include 'presetList_xml.php';
$xml=ob_get_clean();
$xsl=file_get_contents("mobile.xsl");
$xslt=new XSLTProcessor();
$xslt->importStyleSheet(new SimpleXMLElement($xsl));
echo $xslt->transformToXml(new SimpleXMLElement($xml));
JS, который загружает вывод заключается в следующем:
function loadPresetList(){
var listArea=document.getElementById("presetsArea");
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200||xmlhttp.status==0){
listArea.innerHTML=xmlhttp.responseText;
}else{ //ERROR, TRY AGAIN
listArea.innerHTML="Error. Retrying...";
loadPresetList();
}
}
}
xmlhttp.open("GET","presets_transformer.php?type=mobile&r="+Math.random(),true);
xmlhttp.send();
}
Ничего особенного, как вы можете видеть; но это мой первый раз, используя XSLT, поэтому я могу делать что-то неправильно.
Заранее спасибо :)
EDIT: Ввод DIV вокруг каждого элемента, кажется, чтобы исправить эту проблему. Зачем? Понятия не имею. Тем не менее: первый тег открыт всегда отсутствует закрывающий тег
Или создайте оба: HTML для рендеринга на основе браузера и XHTML для дальнейшей обработки приложений. –