如何给xml应用样式
引子:可扩展标记语言xml(Extensible Markup Language)自己平常也用到的不多,除了在ajax处理服务器返回的数据可能会用到外(不过一般用json处理数据的比较常见)还真没怎么了解过。其实我们常用的超文本标记语言HTML和XML可是有着挺大的联系,都是从标记语言发家,未来趋势HTML很有可能会被XML取代,XML优势就体现在可扩展,HTML它就固定是w3c定义的那些个标签,但是XML的标签很灵活随你起什么名字能够更精准的表现自己页面的信息。但XML也有它和HTML相比不灵活的地方,比如怎么应用样式。
正文:HTML应用样式有三种(内联,内嵌,外部引用),XML应用样式目前完全支持的应该只有外部引用(见w3c官方说明:https://www.w3.org/TR/CSS2/intro#q2 )
- 外部样式表:HTML有link元素链接外部样式表,有关link标签的详细说明及注意事项可参见我另篇博文(http://www.cnblogs.com/venoral/p/5202221.html),但是XML中link元素不会被当成引用外部样式的指令,XML提供了“xml-stylesheet”处理指令的方法来附加外部样式表。具体用法如下:
<?xml-stylesheet href="x.css" type="text/css" media="all" title="描述"?>
该处理指令必须放在文档第一个标签前面;
- type="text/css"可以省略,但最好还是不要省略这样能帮助浏览器识别该文件类型而决定在不支持的情况下是否下载它;
- media="all"可省略,用来设置样式表支持的媒介,属性值可以取all,screen,print等;
- title="描述"可省略,可以用来设置标题,不过xml不会出现多个首选样式表存在的情况下只会应用一个的情况它是全部应用的且层叠,不同于HTML的首选样式表。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="a.css" type="text/css"?>
<?xml-stylesheet href="b.css" type="text/css"?>
<test>
测试
</test>
- 内嵌样式表:HTML有style标签,w3c只给出用“xml-stylesheet”的方式外部引用样式表。在http://www.shanghai.ws/w3c/Style/styling-XML.html#Embedded 看到用的是类似于锚点的用法实现的内嵌样式,不过经我测试浏览器对此支持不佳。以下测试chrome测试版本:46.0.2490.80 firefox测试版本:44.0.2 IE测试版本:11.0
<?xml-stylesheet href="#s1" type="text/css"?>
<doc>
<s id="s1">
s { display: none }
p { display: block ;
color: red ;
}
</s>
<p>Some text... </p>
<p class="note">A note... </p>
</doc>chrome对此完全不识别:

firefox只识别了p元素,也就是除了带引用id s的之外的元素,而且会把s元素内容原样展示:

IE对此完全不识别:

- xml对元素选择器的支持这是毋庸置疑的,测试一下xml对id选择器,类选择器的支持:
id选择器:chrome,firefox正常,IE不支持
类选择器:chrome,IE不支持,firefox奇葩,居然支持。
属性选择器:想浏览器都支持怎么办,可以使用属性选择器“[ ]”获取元素,这样三大浏览器就全部支持了,属性选择器里xml支持~,*,^,$匹配:
<?xml-stylesheet href="a.css" type="text/css"?>
<doc>
<p class="test">Some text... </p>
<p>A note... </p>
</doc>
p[class="test"]{
color: red;
}
后代选择器:支持 , >,+,后代元素,直接子元素,直接兄弟元素。
伪类选择器:chrome,firefox支持 :hover,:first-child(省略伪类前面的限定元素,则表示在根元素下找第一个子元素,html一般是head元素),:lang()。IE支持:first-child,:lang()。
伪元素选择器:chrome,firedfox支持:before,:after。IE支持的前提是应用该伪元素的元素不能是id和类选择器,如#test:after就不行。
参考:http://www.shanghai.ws/w3c/Style/styling-XML.html
http://www.ibm.com/developerworks/cn/xml/x-newxml/
粗略测试,如有误解,还望各位指正!感谢!
如何给xml应用样式的更多相关文章
- Eclipse syntax coloring java xml 语法 样式
自定义java源文件的编码样式,包括关键词等等的样式和颜色等,可以一边调下面就能看到样式效果,这是我自己一个个设置好的如图 自定义xml文件编辑器的样式格式,其实我装了sublime 但是 eclip ...
- 【HTML/XML 8】XSL,可扩展样式表语言
导读:上篇博客说了在XML文档中实现表现形式的一种形式:CSS层叠样式表,本篇博客将接着说明其另一种实现方式XSL,并将分析XSL和CSS之间的 关系. 一.XSL简介 XSL(eXtensible ...
- iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)
<分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...
- XML 基础
linux下xml编辑器 vim gedit editix wonderful;免费30天;可以进行有效性检查 xerces oxygen 收费 xmlcopyedit serna free 是ser ...
- salesforce 零基础学习(三十二)通过Streams和DOM方式读写XML
有的时候我们需要对XML进行读写操作,常用的XML操作主要有Streams和DOM方式. 一.Streams方式 Streams常用到的类主要有两个XmlStreamReader 以及XmlStrea ...
- JAVA基础学习之XMLCDATA区、XML处理指令、XML约束概述、JavaBean、XML解析(8)
1.CDATA区在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理.遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直 ...
- 第十四章:样式(Style)和主题(Theme)
简介 Android的样式(Style)和主题(Theme)文件就好比WEB开发中的CSS一样,可以实现UI界面的风格统一管理,这和Windows平台的XAML格式(Silverlight.WPF)类 ...
- 仿iOS Segmented Control样式"
同步发表于http://avenwu.net/2015/02/05/styled_radiogroup_segmented_control Fork on github https://github. ...
- android 修改系统的dialog样式
android 修改系统的dialog样式 一.觉得自定义配置文件麻烦?那就来修改系统自定义XML文件来实现修改系统dialog的样式吧. 如果是在XML中样式:首先来说下样式. 在 Style.x ...
随机推荐
- 摘录知乎上关于android开发的话题精华
1.初学者学习 Android 开发,有什么好网站推荐? http://www.zhihu.com/question/19611325 2.Android 开发有哪些新技术出现? http://www ...
- c++ 设计模式1
从面向对象谈起 1) 底层思维:向下,如何把握及其底层,从微观理解对象构造 (语言构造.编译转换.内存模型.运行时机制) 抽象思维: 向上,如何将我们的周围世界抽象为程序代码 (面向对象.组件封装 ...
- C# Hook钩子实例代码之截取键盘输入,需要的朋友可以参考下
一.关于本文 以最通俗的语言说明钩子的使用方法,具体到钩子的详细介绍可以参照下面的网址: http://www.microsoft.com/china/community/program/origin ...
- VSS错误:The Sourcesafe Web service cannot be accessed at the specified address
第一次使用正常,今天再次打开vs项目的时候就突然连不上vss的服务器了. 手动修改连接的时候会让输入一个address(http的) (一般正常的连接会是浏览的方式找到服务器文件的地址的) ...
- Android读取RAM,ROM,SD卡容量
1)简介 一般人们在买手机的时候,在手机配置上都会出现"内存容量:512MB ROM+512MB RAM "等等类似这样的说明,可能很多人都知道RAM的意思就是运存的意思,但是对于 ...
- Stream Collector
// Accumulate names into a List List<String> list = people.stream().map(Person::getName).colle ...
- Oracle基础 存储过程和游标
一.带游标的存储过程 游标作为参数有两种类型: 1.声明系统游标类型 SYS_REFCURSOR 1)游标作为存储过程的参数: --带游标的存储过程 CREATE OR REPLACE PROCEDU ...
- MyEclipse设置编码方式 转载【http://www.cnblogs.com/susuyu/archive/2012/06/27/2566062.html】
1.windows->Preferences……打开"首选项"对话框,左侧导航树,导航到general->Workspace, 右侧Text file encoding ...
- Learn Vim
Vim Note 很早就知道vim是一个很强大的编辑器,也用了很久.不过没有系统的总结过,这次就写个笔记方便以后看看(本文在vim下编辑完成) 第一印象 打开vim第一感觉就是无从下手,相信大多数人和 ...
- 剑指Offer21 二叉树的层序遍历
/************************************************************************* > File Name: 21_PrintT ...