加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML语法

发布时间:2020-12-16 00:17:57 所属栏目:百科 来源:网络整理
导读:XML可以用来写配置,这个很简单 . 也可以用来存储数据 . 如果你是一个程序员,写一个DTD / SCHEMA,用来规范XML文件,那么你完全可以把这个XML交给策划人员去配置,这好像是架构师干的事啊,不管怎样这也可以规范你的XML配置写法.起到事半功倍的效果. 目前的文本编

XML可以用来写配置,这个很简单 . 也可以用来存储数据 . 如果你是一个程序员,写一个DTD / SCHEMA,用来规范XML文件,那么你完全可以把这个XML交给策划人员去配置,这好像是架构师干的事啊,不管怎样这也可以规范你的XML配置写法.起到事半功倍的效果.

目前的文本编辑器有很多 : EverNote,Notepad++,UltraEdit 等,用它们来编写一些简单的配置是可以的,但是作为企业级用的XML文件,还是用XMLSPY比较好. XMLSPY下载地址 :http://www.altova.com/simpledownload1.html . 目前最新版是 2015版的 . 好了废话不多说,正题来了

j_0057.gif

,我用的2011版

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEbooks[
	<!ELEMENTbooks(bookCell+)>
	<!ELEMENTbookCell(btitle,author,part+)>
	<!ELEMENTbtitleEMPTY>
	<!ELEMENTauthorEMPTY>
	<!ELEMENTpart(title,chapter)>
	<!ELEMENTtitle(#PCDATA)>
	<!ELEMENTchapter(ctitle,sect1)>
	<!ELEMENTctitle(#PCDATA)>
	<!ELEMENTsect1(stitle,para)>
	<!ELEMENTstitle(#PCDATA)>
	<!ELEMENTpara(#PCDATA)>
	
	
	<!ATTLISTbtitle
		nameID#REQUIRED
	>
	<!ATTLISTauthor
		nameCDATA#REQUIRED
		gender(男|女)#IMPLIED
		emailCDATA#IMPLIED
		fromCDATA#FIXED"CHINA"
	>
	<!ENTITYauthorName"Aonaufly">
]>
<books>
	<bookCell>
		<btitlename="XML指南"/>
		<authorname="&authorName;"gender="男"email="123@xx.com"from="CHINA"/>
		<part>
			<title>PartTitle</title>
			<chapter>
				<ctitle>ChapterTitle</ctitle>
				<sect1>
					<stitle><![CDATA[Section1Title]]></stitle>
					<para>Text</para>
				</sect1>
			</chapter>
		</part>
	</bookCell>
</books>

解释 : 这是一个内置XML . <!ELEMENT A 是对元素进行限制,其中 (B +/*/?/ ) 分别表示元素A中有B元素 1个或多个/0个或多个/0个或1个/ 1个 . EMPTY表示没内容(可以有属性)如<B s= "x"/>,而 (#PCDATD) 表示B的内容是数据无需解析相当于<![CDATA[ ---- ]]> ; <!ATTLIST A 对属性A进行规范控制,ID B表示 B是具有唯一性的,#REQUIRED 表示必须要有值,#IMPLIED 表示这个属性可以被忽略不写,#FIXED 表示固定值 ; <!ENTITY A B > 就相当于 const * A = B 可以在XML中用 "&A;" 来替代的 .


关于外部DTD文件:

引入 <!DOCTYPE books SYSTEM "x.dtd">


混合DTD<!DOCTYPE books SYSTEM "x.dtd" [

<!-- 内部DTD文件在此编写 -->

]>


schema,是MicroSoft的,用来取代DTD,他比DTD的优势大,但是没有被 W3C认证


<?xmlversion="1.0"encoding="UTF-8"?>
<loadsxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="file:///F:/XC/xs.xsd">
	<addressservice="172.0.0.1"point="80"/>
	<versionx>2.1.1</versionx>
	<respriority="1">
		<contentname="main.swf"type="byte"url="s/q/"/>
		<contentname="lan.txt"type="txt"url="s/l"/>
	</res>
</loads>


接下来,是Schema 文件 xsd

<?xmlversion="1.0"encoding="UTF-8"?>
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified"attributeFormDefault="unqualified">
	<xs:simpleTypename="typeEnum">
		<xs:restrictionbase="xs:string">
			<xs:enumerationvalue="byte"/>
			<xs:enumerationvalue="txt"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:attributeGroupname="addressGrop">
		<xs:attributename="service"type="xs:string"/>
		<xs:attributename="point"type="xs:int"/>
	</xs:attributeGroup>
	<xs:complexTypename="resComplex">
		<xs:sequence>
			<xs:elementname="content">
				<xs:complexType>
					<xs:attributename="name"type="xs:string"use="required"/>
					<xs:attributename="type"type="typeEnum"/>
					<xs:attributename="url"type="xs:string"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attributename="priority"type="xs:string"/>
	</xs:complexType>
	<xs:elementname="loads">
		<xs:complexType>
			<xs:sequence>
				<xs:elementname="address">
					<xs:complexType>
						<xs:attributeGroupref="addressGrop"/>
					</xs:complexType>
				</xs:element>
				<xs:elementname="versionx"type="xs:string"/>
				<xs:elementname="res"type="resComplex"maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

下回分解 ...

<xs:element name = "A" 加入元素A <A /> 或 <A></A>

<xs:attribute name = "B" type= "xs:string"加入属性B <A B= "c" /> 类型为string

<xs:complexType 加入复杂类型,用于 <xs:element 后

<xs:sequence 加入序列放在xs:complexType后面


关于扩展基本属性 看TypeEnum

扩展属性组 看addressGroup


注意基本属性的扩展 和 其他扩展在XML中的用法是不一样的


当然还有 Group

element 也可以扩展

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读