用了这么长时间的xml,你懂它的格式吗
xsobi 2025-01-08 18:16 9 浏览
验证xml格式
DTD验证
可以使用DTD来定义XML文档的合法构建模块。DTD可以写在文档内部,也可以另外写一个文件
文档内部
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>ll</to>
<from>zh</from>
<body>hello</body>
</note>
DTD包含在以上格式的声明中
<!DOCTYPE 根元素 [元素声明]>
外部文档
如果DTD位于XML源文件外部,应该封装在一个DTD文档中,并在XML中声明
<!DOCTYPE 根元素 SYSTEM "文件名">
DTD结构
元素声明的语法格式
<!ELEMENT 元素名称 元素内容说明>
元素内容说明的格式
#PCDATA
关键字#PCDATA说明元素包含字符数据,内容只能是字符数据
例:
<?xml version="1.0"?>
<!DOCTYPE name [
<!ELEMENT name (#PCDATA)>
]>
<name>张三</name>
子元素
说明元素包含的是子元素。当一个元素只包含子元素时而没有字符数据时,表示此元素类型具有元素型类型。在该类型的元素声明时,通过内容模型来指定在其内容上的约束(内容模型是决定子元素类型和子元素出现顺序的一种简单语法)
例:
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>ll</to>
<from>zh</from>
<body>hello</body>
</note>
复杂一些的内容模型为
<!--
竖线| 表示这些至少存在一个
? 表示可以有一个也可以没有
* 表示零个或者多个
+ 表示一个或者多个,至少有一个
-->
<!-- 该内容模型表示 简历中要有名字,性别,年龄,电话和手机任选一个,填写一个家庭住址或者不填,零个或者多个兴趣爱好,至少一个教育经历,工作经验可有可无 -->
<!ELEMENT 简历 (名字,性别,年龄,(电话 | 手机), 家庭住址?, 兴趣爱好*, 教育经历+, 工作经验*)>
混合内容
既可以包含子元素,也可以包含字符数据(使用混合内容模型时,#PCDATA关键字必须是模型中的第一个选项,不能再模型中使用逗号、问号或加号。只能用竖线来分隔#PCDATA和元素)
<?xml version="1.0"?>
<!DOCTYPE email [
<!ELEMENT email (#PCDATA | body)*>
<!ELEMENT body (#PCDATA)>
]>
<email>
邮件
<body>hello</body>
</email>
EMPTY
关键字EMPTY表明该元素既不包含字符数据,也不包含子元素,是一个空元素
例:
<!ELEMENT br EMPTY>
ANY
关键字ANY表明该元素可以包含任何字符数据和子元素
<!ELEMENT note ANY>
XML Schema Definition
在DTD之后,W3C推出了新的规范来验证xml格式:XML Schema Definition
Schema语法格式
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http:///j2j.idril.cn" xmlns="http://j2j.idril.cn" elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:schema
// 指定了schema中用到的元素和数据类型来自的命名空间 还规定了来自此命名空间的元素和数据类型应该使用前缀xs: xmlns:xs="http://www.w3.org/2001/XMLSchema"
// 说明此schema定义的元素来自的命名空间
targetNamespace="http:///j2j.idril.cn"
// 指定了默认的命名空间
xmlns="http://j2j.idril.cn"
// 指出任何XML实例文档所使用的且在此schema中声明过的元素必须被命名空间限定
elementFormDefault="qualified">
// 简易元素(仅包含文本的元素,不会包含子元素或属性)
// 常用的type有xs:strig、xs:decimal、xs:integer、xs:Boolean、xs:date、xs:time
<xs:element name="to" type="xs:string"/>
// 属性
// 常用的type有xs:strig、xs:decimal、xs:integer、xs:Boolean、xs:date、xs:time
<xs:attribute name="lang" type="xs:string"/>
// 限定 用于XML元素或者属性定义可接受的值
<xs:restriction base="xs:integer">
<xs:minInclusive value="0">
<xs:maxInclusive value="120">
</xs:restriction>
// 复合元素
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Schema的使用
同样的,在xml中需要声明Schema
<?xml version="1.0"?>
<note xmlns="http://j2j.idril.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://j2j.idril.cn node.xsd">
<to>ll</to>
<from>zh</from>
<body>hello</body>
</note>
// 规定了默认的命名空间的声明
xmlns="http://j2j.idril.cn"
// 定义了XML Schema实例命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
// 包含两个值 第一个值是需要使用的命名空间 第二个值是供命名空间使用的XML Schema的位置
xsi:schemaLocation="http://j2j.idril.cn node.xsd"
相关推荐
- 5.5英寸触屏,搭载“安卓系统”的智能计算器评测:这设计挺脑洞
-
“计算器”可以说是我们日常生活中较为常用的一款电子产品,纵使手机上也有计算器功能,且足以替代实物计算器,但现在还是有很多人习惯用实物计算器,例如;做批发的店铺老板,计算器就放在店铺显眼位置,结账时顺手...
- Android之父晒新款手机,造型酷似遥控器
-
安迪·鲁宾大家可能并不陌生,鲁宾曾一手创建了安卓操作系统,被外界誉为“安卓之父”。2015年鲁宾又创立智能手机公司EssentialProductsInc,还获得亚马逊和腾讯的投资。在筹备两年后,...
- WP8.1的IE11为何不支持淘宝网触屏版?
-
IT之家(www.ithome.com):WP8.1的IE11为何不支持淘宝网触屏版?众所周知IE浏览器有自己的一个内核(简称IE内核),WP8.1系统的自带移动版IE11浏览器,但为什么iOS、An...
- 手机屏幕失灵乱跳乱点,屏幕时好时坏是怎么回事?
-
我们平时在使用手机的时候,如果我们的手机经常出现屏幕不受控制,手机屏幕会出现乱跳自己乱点的一些情况,这是什么问题呢?出现这种问题我们应该怎么去解决呢,今天我们九一手机维修就来跟大家说说这个问题该怎样去...
- 跨界表演有风险,百事手机 P1 众筹宣告失败
-
大家还记得曾经轰动一时的百事手机P1吗?这款10月份曝光、11月份众筹的手机在京东众筹失败,已经退款。想要喝着百事可乐玩着百事手机的网友,赶紧该干嘛干嘛去吧。据悉,百事可乐P1采用铝合金...
- “傀儡”病毒感染超10万台手机
-
本报讯(记者孙奇茹)手机在没人操作的情况下,竟然自己亮屏、执行一些动作。这不是闹鬼,而是手机中毒了。日前,猎豹移动安全实验室发出警报,全球首个伪造模拟用户操作的安卓病毒被截获,并被命名为“傀儡(Go...
- Android事件分发机制
-
事件分发机制Android事件分发是指在Android系统中,当用户触摸屏幕或执行其他操作时,系统如何将这些事件传递给正确的视图或组件进行处理的过程。Android事件分发遵循一种称为"事件分...
- Android让视图像玻璃一样破裂
-
AndroidUILibs之BrokenView1.说明BrokenView让视图产生玻璃破裂的效果。注意:该库只能在API14以上的设备上运行2.配置在模块的build.gradle上面添加...
- 车载大屏爽翻了?英国研究机构:大尺寸触摸屏比酒驾更危险
-
大屏不仅蔓延到手机,汽车也不例外,得益于更加直观的人机交互体验,车载触控大屏逐渐成为越来越多车企的主流选择。然而最新的一项研究证明——触控大屏比酒驾、毒驾更危险。日前,英国一项道路安全研究报告指出,当...
- 安卓系统被曝严重安全漏洞 恶意程序竟能秘密拍照或录制音视频
-
央视网消息:据今日俄罗斯网站20号报道,以色列一家知名网络安全公司宣称发现谷歌、三星等制造商生产的安卓手机,系统存在严重安全漏洞,黑客能够在未经手机机主许可的情况下,操控安卓手机秘密拍摄照片、录制视...
- 央视曝光:安卓系统曝漏洞!有人可能正在用你的手机...
-
近日,谷歌、三星等制造商生产的安卓手机,被曝出系统存在严重安全漏洞。黑客能够在未经手机机主许可的情况下,操控安卓手机秘密拍摄照片、录制音视频并上传。点击下方,先看视频↓↓↓视频来源:央视新闻利用漏洞!...
- 安卓系统曝漏洞!有人可能正在用你的手机秘密拍照
-
近日,谷歌、三星等制造商生产的安卓手机,被曝出系统存在严重安全漏洞。黑客能够在未经手机机主许可的情况下,操控安卓手机秘密拍摄照片、录制音视频并上传。利用漏洞“恶意应用程序”拍照、录音视频并上传据今日俄...
- 安卓用户注意了 你的爱机可能会面临新式恶意攻击
-
据外媒报道,最近,东京早稻田大学的三名学者称,现代Android智能手机容易受到一种名为“Tap'nGhost”的新型攻击,这种攻击可以使不存在的“手指”点击手机屏幕,以采取行动。“Tap'nGh...
- Android学习之Touch事件的处理
-
在移动开发过程当中,我们经常会遇到手势处理和事件触摸的情况,如果不了解整个事件的处理机制,对于开发的同学和码农是非常痛苦的,但是事件触摸的处理确实是一个非常复杂的过程,细讲起来,估计我都能讲迷糊,这里...
- 办公小技巧:制作模糊查询效果Excel下拉菜单
-
在Excel单元格中输入特定范围的内容时,一般会利用数据有效性生成下拉列表的方式进行,但如果源列表的内容太多(比方说有数百个),这时再通过下拉列表查找需要的值就很不方便了。如果采用智能感知的模糊查询下...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- characterencodingfilter (33)
- getmonth (34)
- label换行 (33)
- android studio 3 0 (34)
- html转js (35)
- 索引的作用 (33)
- checkedlistbox (34)
- xmlhttp (35)
- mysql更改密码 (34)
- 权限777 (33)
- htmlposition (33)
- 学校网站模板 (34)
- textarea换行 (34)
- 轮播 (34)
- asp net三层架构 (38)
- bash (34)