好记性不如烂笔头61-XML文档结构和属性说明

XML我们使用的非常多,简单的XML文档结构大家也知道,属性呢,好像也马马虎虎都知道,但是在进一步了解XML的时候,发现自己了解的还是不够,把这些资料整理下。

1、 XML声明

xml文档是由一组使用唯一名称标识的实体组成的。始终以一个声明开始,这个声明指定该文档遵循XML1.0的规范。XML也有一种逻辑结构,在逻辑上,文档的组成成部分包括声明,元素,注释,字符引用和处理指令。

以下是代码片段:

2、 根元素

每个XML文件都必须有且只能有一个根元素。用于描述文档功能。可以自定义根元素。下例中的root为根元素。 以下是代码片段:

<root>...................</root>

3、 XML代码

根据应用需要创建自定义的元素和属性。标签包括尖括号以及尖括号中的文本。元素是XML内容的基本单元。元素包括了开始标签、结束标签和标签之间的内容。

以下是代码片段:

<title>XML是可扩展标记语言</title>

整行统称为元素,其中为标签,XML是可扩展标记语言是字符数据

XML的标记有:标签,注释,处理指令,DTD和引用等。
注释
在XML中,注释与HTML的一样,都是用<!-- 注释 -->指定注释。要遵循以下规则:
在注释中不应包含有“-”“—”等字符,以免XML解释器产生混淆。
注释不能放在标签中
注释不能写在第一行。第一行是XML声明。
注释不能嵌套
可跨行注释,与java中的注释块功能一样。
处理指令
凡是以<?开始, ?>结束的都是处理指令。XML声明就是一个处理指令。
标签间的字符数据的分类
标签间的字符数据可以是除了“<”以外的任何合法(Unicode)字符。“<”字符是预留作为标签的开始字符。字符数据分以下两类:
PCDATA(是指将要通过解析器进行解析的文本)
CDATA (是指不要通过解析器进行解析的文本)
其中不允许中CDATA块之内使用字符串“]]>”,因为它表示CDATA块的结束。

实体

实体可以是常用的短语,键盘字符,文件,数据库记录或任何包含数据的项。在XML中,有时实体内包含了些字符,如&,<,>,",‘等。这些均需要对其进行转义,否则会对XML解释器生成错误。
字符
转义后字符
<
<
>
>
"
"
‘
&apos;
&
&

在XML中出现以上字符的,均需要转义才能通过。

4、 XML实体

<!ENTITY 实体引用名 "引用内容">
实体又分两类:
1,一般实体(格式:&实体引用名;)
2,参数实体(格式:%实体引用名;)
一般实体,可以在XML文档中的任何位置出现的实体称为一般实体。
实体可以声明为内部实体还是外部实体。外部实体分SYSYTEM及PUBLIC两种。SYSYTEM引用本地计算机,PUBLIC引用公共计算机,外部实体格式如下:
<!ENTITY 引用名 SYSTEM(PUBLIC) "URI地址">
管理实体引用的规则包括:
引用实体前,必须先在XML文档中声明该实体。
实体引用不应含有任空空格。例如:& title; &title ;都是不对的。
实体引用的XML文件必须是格式良好的。
实体引用可以替代常规字符数据,也可以在标签属性中使用实体引用。如
<title value="&titlue" />

DOCTYPE声明
在XML文档中,<!DOCTYPE[...]>声明跟在XML声明的后面。实体也必须在DOCTYPE声明中声明。语法如下:
以下是代码片段:
<?xml version="1.0" unicode="UTF-8">
<!DOCTYPE[
.....在此声明实体<!ENTITY 实体引用名 "引用内容">
]>

代码例子:
以下是代码片段:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE root[
<!ENTITY titlue "引用字符1">
<!ENTITY titlue2 "引用字符2">
]>
<root>
<title value="&titlue;"> &titlue; </title>
<title2>
<value><a>&titlue2;</a></value>
</title2>
</root>
在IE是打开XML文件显示为:
以下是代码片段:
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE root (View Source for full doctype...)>
- <root>
<title value="引用字符1">引用字符1</title>
- <title2>
- <value>
<a>引用字符2</a>
</value>

</title2>

</root>

当满足以下条件时,是为格式良好的XML文档:

至少需要一个元素

XML标签区分大小写

应正确使用结束标签

正确的嵌套

应使用合法标签:标签必须以一个字母,下划线,或冒号开始,后面可以跟字母,数字,句号,冒号,下划线,连字符的组合。但不能有空格。也不应以XML开头,因为XML是保留字。

标记名称长度

应定义有效属性

应验证文档

在XML中,所有的值都被被为字符串。

5、 解析器

解析器有两种类型:
1,非验证解析器:它检查文档的格式是否良好
2,验证解析器:使用DTD检查文档的有效性(分别有Apache的Xerces和Oracle XML Parser)
DTD:(Document)文档类型结构
DTD的一般结构如下:
<!DOCTYPE dtd-name[
<!ELEMENT element-name (element-content type)>
<!ATTLIST element-name attribute-name attribute-type default-value>
]>

element-name :元素名
element-content type:元素类型
attribute-name :属性名
attribute-type:属性类型
default-value:默认值
空元素:EMPTY,指定该元素没有子元素或字符数据。<!ELEMENT element-name (EMPTY)>
带数据的元素:
<!ELEMENT element-name (#CDATA)> 包含有不会通过解析器解析的数据
<!ELEMENT element-name (#PCDATA)> 包含有要通过解析器解析的数据
<!ELEMENT element-name (ANY)> 包含零个或零个以上任何声明类型的子元素以及字符数据
带有子元素的元素
<!ELEMENT element-name (child-element-name1,child-element-name2....)> 多个子元素时用,号分隔
声明相同元素只出现一次
<!ELEMENT element-name (child-element-name)>
声明相同元素只出现零次或一次
<!ELEMENT element-name (child-element-name?)>
声明相同元素只出现一次或多次
<!ELEMENT element-name (child-element-name+)>
声明相同元素只出现零次或多次
<!ELEMENT element-name (child-element-name*)>
属性声明:
Default属性值:默认属性值
<!ATTLIST element-name attribute-name CDATA "default-value">
Implied属性值:可有可无
<!ATTLIST element-name attribute-name #IMPLIED>
Required属性值:指定属性为必须的
<!ATTLIST element-name attribute-name #REQUIRED>
Fixed属性值:属性值是固定的,使作者不能更改
<!ATTLIST element-name attribute-name CDATA(PCDATA) #FIXED "value">
Enumerated属性类型:使属性值成为一组固定合法值的一员
<!ATTLIST element-name attribute-name (1 | 2 | ....) "default-value">
DTD示例:
内部DTD 以下是代码片段:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE root[
<!ELEMENT root (book*)>
<!ELEMENT book (name,title,versions,address)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT versions (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ATTLIST title value CDATA #REQUIRED>
<!ATTLIST address value CDATA #FIXED "中国广东">
<!ATTLIST versions value (1.0 | 2.0 ) "1.0">
<!ENTITY addr "中国广东珠海">
]>
<root>
<book>
<name>XML</name>
<title value="a">xml可扩展语言</title>
<versions value="1.0">1.0</versions>
<address value="中国广东">&addr;</address>
</book>
<book>
<name>XML</name>
<title value="">xml可扩展语言</title>
<versions>1.0</versions>
<address value="中国广东">&addr;</address>
</book>
</root>

外部DTD使用语法如下:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE 根元素的名称 SYSTEM "外部DTD文件URI">
<root>........<root>
此处的外部DTD文件内容为: 以下是代码片段:
<?xml version="1.0" encoding="GBK"?>
<!ELEMENT root (book*)>
<!ELEMENT book (name,title,versions,address)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT versions (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ATTLIST title value CDATA #REQUIRED>
<!ATTLIST address value CDATA #FIXED "中国广东">
<!ATTLIST versions value (1.0 | 2.0 ) "1.0">
<!ENTITY addr "中国广东珠海">
时间: 2024-10-28 17:10:32

好记性不如烂笔头61-XML文档结构和属性说明的相关文章

【Win10 应用开发】自适应Toast通知的XML文档结构

原文:[Win10 应用开发]自适应Toast通知的XML文档结构 老规矩,在开始之前老周先讲个故事. 话说公元2015年7月20日,VS 2015发布.于是,肯定有人会问老周了,C#6有啥新特性,我学不来啊.学不来的话你应该检讨.老周比较保守地计算一下,学会C# 6只需要20秒,不信的话,老周笔划笔划一下,你就明白了. 1.属性自动初始化.在4.0中引入了这样声明属性: public int VVVV { get; set;} 以前是属性包装一个字段,在初始化属性时只要对字段赋值即可,这个省略

创建XML文档结构

static void CreateXML(string outputPath) { XmlDocument _xmlDoc = new XmlDocument(); string _xmlNode = @"<books type='ITP' language='english'><metadata></metadata></books>"; _xmlDoc.LoadXml(_xmlNode); XmlDeclaration _xmlDe

XML文档结构【转载】

一,XML文档结构  XML文档是由一组使用唯一名称标识的实体组成.也是由数据和描述数据的标记组成. 文档的组成部分包括:声明,元素,注释,字符引用和处理命令. 二,创建XML文档 XML声明始终是任何XML文档的第一行.  1,陈述XML声明:为XML文档匹配合适的解析器.    XML声明语法:  <? xml version = "XML版本号"  standalone = “no或yes” encoding = “UTF-8或UTF-16或GB2321或GBK”?>

【Win 10应用开发】Adaptive磁贴模板的XML文档结构

在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴的新XML模板. 同样道理,你依旧可以使用8.1时候的磁贴模板,在win 10的API中也是支持的,此外,Win10 App还支持全新的自适应磁贴模板,本文老周就给大家先讲一下基本结构,下一篇文章中咱们再说一说复杂排版. 应用程序的图标可以分为两类:第一类是应用商店上专用的,就是你的应用提交到商店后,给用户看的图标:另一类就是应用本身的一些图标或磁贴. 磁贴其实也就这么

xml文档绑定某个属性值到treeview算法

原文发布时间为:2008-08-10 -- 来源于本人的百度文章 [由搬家工具导入] using System.Xml; protected void Button2_Click(object sender, EventArgs e)    {        string xmlpath = Server.MapPath("~/App_Data/dirList.xml");        if (File.Exists(xmlpath))        {            Xml

(转载)将一段符合XML格式规范字符串插入已有XML文档当中

想我们已经存在一个XML文档,结构如下: < xmlversion="1.0"encoding="utf-8">< employees>< employeeclass>< firstname>symbol< /firstname>< lastname>sn< /lastname>< /employeeclass>< /employees> 现在我们想就向现有的

关于XML文档的讲解

1        XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用.同时,在2004年2月W3C又发布了1.0版本的第三版.我们要学习的还是1.0版本!!! 1.2 XML的应用场景 保存关系型数

XML文档操作工具类

1 /// <summary> 2 /// XML文档操作工具类 3 /// </summary> 4 public class XmlUtil 5 { 6 #region XML文档节点查询和读取 7 8 /// <summary> 9 /// 选择匹配XPath表达式的第一个节点XmlNode. 10 /// </summary> 11 /// <param name="xmlDoc">XML文档</param>

C# 创建XML文档

有些时候我们需要生成一个xml文档作为数据交换的容器.当然我们用拼接字符串的方法来进行构建xml,但是这种方法虽然简单有效,但是如果xml文档结构过于复杂,拼接字符串会让人眼花缭乱.这时候就需要C#给我们提供现成的类库,以供我们自由的创建xml文档. 比如我们要创建如下的xml文档 <?xml version="1.0" encoding="UTF-8"?> <ns0:Z_AVS_UPLOAD_WEIGHT_Request xmlns:ns0=&q