我正在使用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>
要在 <!DOCTYPE HTML>
之前包含 PHP,请使用不带 version="5.0"
属性的 <xsl:output method="html" indent="yes" encoding="UTF-8" include-content-type="no" />
。 这会将输出声明为 HTML 而不带<!DOCTYPE HTML>
。
将 PHP 处理指令插入模板中您希望它的位置:
<xsl:processing-instruction name="php">
define('__ROOT__', dirname(dirname($_SERVER["DOCUMENT_ROOT"])));
?</xsl:processing-instruction>
然后使用 XML 输出转义创建文档类型标记:
<xsl:text disable-output-escaping="yes"><!DOCTYPE HTML></xsl:text>