下面我尝试在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>
答案 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>