我使用命名空间来识别可以从不同用户发送的 HTML 片段,但是 Internet Explorer 不支持内容类型 XHTML+XML,向我建议以下解决方案,问题是选择器具有命名空间前缀的 CSS 规则被忽略...我不知道为什么?只是我想提一下,我是 XSL 的新手,所以请一一说:)
索引.php
<?php header('Content-type: application/xml'); ?>
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="xslt.xsl"?>
<html xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:aa="zz"
xmlns:ee="rr">
<head>
<title></title>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<style type="text/css">
aa\:p{background: #00ff00;}
</style>
</head>
<body>
<aa:p>aaa</aa:p>
<ee:p>aaa</ee:p>
</body>
</html>
xslt.xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system=" http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@* | comment() | text() | processing-instruction()">
<xsl:copy/>
</xsl:template>
<xsl:template match="processing-instruction('xml-stylesheet')" />
</xsl:stylesheet>