XSLT 変換 (サーバー側、php) を実行しようとしていますが、XHTML ページの一部であるため、その変換の出力として XHTML が必要です。私が使用する場合
<xsl:output method="html" />
有効な html コードであるコードを生成しますが、br タグ (/ なし) があるため、xhtml として検証されません。
私が使用する場合
<xsl:output method="xml" />
ここに不条理があります: 出力には br/ タグがあり、適切な xml がありますが、それが属するページにそれを配置すると、明確な理由もなく一部の終了タグが消えます。
ここに XSL ファイルがありますhttp://hbxplayer.sf.net/test/mobile.xsl (ここに貼り付けるには少し長いです)
変換を行う PHP は次のとおりです。
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 を使用するのは初めてなので、何か間違っている可能性があります。
前もって感謝します :)
編集: 各要素の周りに div を配置すると、この問題が解決するようです。なんで?何も思いつきません。まだ: 最初に開いたタグには常に終了タグがありません