CSS中的目标标记,内容类型application / xhtml + xml for earliers Internet explorer

时间:2013-06-26 11:58:58

标签: php internet-explorer xslt xhtml xml-namespaces

下面我尝试在CSS中使用tagname(span)来定位元素,但它不适用于早期的Internet Explorer ...如果有人有解决方案,请帮助...

的index.php

<?php header('Content-type: application/xhtml+xml'); ?>

<?xml-stylesheet type="text/xsl" href="copy.xsl"?>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:aa="zz" xmlns:ee="rr">
<head>
    <title></title>
    <style type="text/css">
        /* it work */ aa\:span{background: #00ff00;}
        /* it doesnt work */ span{background: #00ff00;}
    </style>
</head>
<body>
    <aa:span id="span1">
        <aa:p>aaa</aa:p>
    </aa:span>
    <ee:span id="span1">
        <ee:p>aaa</ee:p>
    </ee:span>
</body>
</html>

copy.xsl

<stylesheet version="1.0"
     xmlns="http://www.w3.org/1999/XSL/Transform">
    <template match="/">
        <copy-of select="."/>
    </template>
</stylesheet>

1 个答案:

答案 0 :(得分:0)

好吧,你可以将所有元素转换为纯HTML,而不需要命名空间。

<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:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <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:stylesheet>