为什么我的XHTML5页面会导致IE的怪癖模式?
这是doctype等,包括发送MIME类型的PHP和<?
:
<?php header('Content-Type: application/xml;charset=UTF-8'); ?>
<?php echo '<?';?>xml version="1.0" encoding="UTF-8"?>
<?php echo '<?';?>xml-stylesheet type="text/xsl" href="ie-xhtml-fix.xsl"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr">
<head><meta charset="UTF-8" />
然后来自http://www.w3.org/MarkUp/2004/xhtml-faq#ie的ie-xhtml-fix.xsl是:
<stylesheet version="1.0"
xmlns="http://www.w3.org/1999/XSL/Transform">
<template match="/">
<copy-of select="."/>
</template>
</stylesheet>
对不起我要问。我似乎无法弄清楚这一点,我找不到任何可能导致问题的信息。我希望它能在IE7及以上版本中运行。
答案 0 :(得分:2)
问题似乎是你的XSLT模板正在将处理指令复制到输出,这意味着它们在doctype之前被IE解析,这导致IE进入Quirks模式。
请尝试使用此XSLT:
<stylesheet version="1.0"
xmlns="http://www.w3.org/1999/XSL/Transform">
<output method="html" version="1.0" encoding="UTF-8" doctype-system="about:legacy-compat" />
<!-- Copy all the child nodes of the root -->
<template match="/">
<copy>
<apply-templates select="node()|@*"/>
</copy>
</template>
<!-- For any other node, just copy everything -->
<template match="node()|@*">
<copy-of select="."/>
</template>
<!-- For processing instructions directly under the root, discard -->
<template match="/processing-instruction()" />
</stylesheet>
在IE6及以上版本中经过测试和工作。