XML语法
XML可以用来写配置,这个很简单 . 也可以用来存储数据 . 如果你是一个程序员,写一个DTD / SCHEMA,用来规范XML文件,那么你完全可以把这个XML交给策划人员去配置,这好像是架构师干的事啊,不管怎样这也可以规范你的XML配置写法.起到事半功倍的效果. 目前的文本编辑器有很多 : EverNote,Notepad++,UltraEdit 等,用它们来编写一些简单的配置是可以的,但是作为企业级用的XML文件,还是用XMLSPY比较好. XMLSPY下载地址 :http://www.altova.com/simpledownload1.html . 目前最新版是 2015版的 . 好了废话不多说,正题来了,我用的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 也可以扩展 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- JQ+ajax 提交表单不跳转页面
- ruby-on-rails – 无法在CommentsController中重定向到Nil
- Flex 学习笔记(十一) 改变Accordion的标题样式
- 2018.5.22 Oracle安装配置在虚拟机中外部电脑连接服务
- c# – 创建连接(对象)池 – 要使用的任何库?
- ruby-on-rails – Rails ActiveRecord独特的属性计数大于出
- ruby-on-rails – 我可以在Rails 3中使用AMQP使用请求/回复
- 与句点分隔的oracle连接标识符的确切处理方式
- c# – 是否可以访问另一个进程地址空间以访问特定的对象实例
- xml记录操作日志(此例子是记录控件的操作,实际项目中用到觉