我正在使用XSL来转换XML文档。有没有办法在<!doctype html>
声明之前使用PHP代码构建模板?
<!-- I want some PHP code to go here -->
<xsl:processing-instruction name="php">
error_reporting(0);
define('__ROOT__', dirname(dirname($_SERVER["DOCUMENT_ROOT"])));
require_once(__ROOT__."/classes/CasController.class.php");
$cas = new CasController();
?</xsl:processing-instruction>
<!-- XSL content goes after here -->
<xsl:output method="html" version="5.0" indent="yes" encoding="UTF-8" include-content-type="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/document">
<!-- begin html -->
<html lang="en">
<head>
</head>
<body>
</body>
</html>
<!-- end html -->
</xsl:template>
输出HTML将是
<?php error_reporting(0);
define('__ROOT__', dirname(dirname($_SERVER["DOCUMENT_ROOT"])));
require_once(__ROOT__."/classes/Controller.class.php");?>
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
</body>
</html>
答案 0 :(得分:0)
要在<!DOCTYPE HTML>
之前加入PHP,请使用不含<xsl:output method="html" indent="yes" encoding="UTF-8" include-content-type="no" />
属性的version="5.0"
。这会将输出声明为不带<!DOCTYPE HTML>
的HTML。
将PHP处理指令插入到模板中的位置:
<xsl:processing-instruction name="php">
define('__ROOT__', dirname(dirname($_SERVER["DOCUMENT_ROOT"])));
?</xsl:processing-instruction>
然后使用XML output escaping:
创建doctype标记<xsl:text disable-output-escaping="yes"><!DOCTYPE HTML></xsl:text>