网上接工程活做的网站,广州十大装修设计公司,整站seo技术搜索引擎优化,做网站怎么与客户谈判基本术语一、序言Prolog#xff1a;包括XML声明(XML Declaration)和文档类型声明(Document Type Declaration)。 二、良构(well-formed 规范的)#xff1a;符合W3C定义的XML文档。 为什么XML需要验证#xff1f; 对XML文件施加额外的约束#xff0c;以便交流。举个… 基本术语 一、序言Prolog包括XML声明(XML Declaration)和文档类型声明(Document Type Declaration)。 二、良构(well-formed 规范的)符合W3C定义的XML文档。 为什么XML需要验证 对XML文件施加额外的约束以便交流。举个例子要是我和你在交互一份数据那么按照我的主管意识我可能会这样子定义按照你的主观意识你可能会那样子定义那么我们之间要怎么交互数据呢没有一个提前规定号的约定来规范我们如何写XML那么就连这份XML的解析估计都是问题了吧那还交互个毛线呀。 XML有2种约束1DTD 2schema。 DTD验证 文档类型定义(Document Type Definition)。 DTD定义了XML文档内容的结构保证XML以一致的格式存储数据。精确的定义词汇表对XML的内容施加约束。 符合DTD的规范XML文档称为有效的文档。由DTD定义的词汇表以及文档语法XML解析器可以检查XML文档内容的有效性。 规范的XML文件不一定是有效的有效的一定是规范的。 1、 DTD声明 1) DTD声明可以在单独的一个文件中 2) DTD声明可以内嵌在XML文件中 3) DTD声明可以一部分在单独的文件中另一部分内嵌在XML文件中2、 引入外部DTD文件。DOCTYPE有2种情况 1当引用的文件在本地时 !DOCTYPE 根节点名称 SYSTEM dtd文件路径 2当引用的文件是一个公共的文件时实际中这种情况比较多见的。 !DOCTYPE 根节点名称 public DTD名称 DTD文件的URL 比如我们在写一个JSP前面都有这个文档定义的。 !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd 3、 DTD四种标记声明 元素(ELEMENT)、属性(ATTLIST)、实体(ENTITY)、符号(NOTATION) 1) 元素(ELEMENT) XML元素类型声明 声明元素 !ELEMENT elementName (contentModel) 元素的内容通过内容模式来描述。 DTD 内容模式的种类有 EMPTY 元素不能包含任何数据但可以有属性(前提是必须声明其属性)。 不能有子元素。不能有文本数据包括空白换行符。 DTD中定义 !ELEMENT elementName EMPTY XML中elementName/推荐 或者elementName/elementName (#PCDATA) 规定元素只包含已析的字符数据而不包含任何类型的子元素的内容类型。 DTD中定义 !ELEMENT student (#PCDATA) XML中合法内容 studentwatching TV/student (Elements) 元素由内容模式部件指定。 !ELEMENT name (child particles) 内容模式部件可以是下表列出的内容。 !ELEMENT name (a,b) 子元素a、b必须出现且按照列表的顺序 !ELEMENT name (a|b) 选择子元素a、b只能出现一个 !ELEMENT name (a) 子元素a只能且必须出现一次 !ELEMENT name (a) 子元素a出现一次或多次 !ELEMENT name (a)* 子元素a出现任意次(包括零次、一次及多次) !ELEMENT name (a)? 子元素a出现一次或不出现 Mixed 混合模式子元素中既可有文本数据又可有下级子元素。 !ELEMENT rn (#PCDATA| an | en)*“|”和“*”必须写。 上句表示在 rn 内字符数据 或 en及an 可以出现任意多次顺序不限。 优先写(#PCDATA) 如(#PCDATA|name)* 正确 (name|#PCDATA)* 错误 ANY 元素可以包含任何类型的数据。子元素(必须在DTD中有定义) 和 文本数据(包括空白)。 DTD中定义 !ELEMENT a ANY !ELEMENT b ANY XML中合法内容 asomngthing/a 或者 a/ 或者 aboo/b/a 2) 属性(ATTLIST) 特定元素类型可设置的属性属性的允许值声明 !ATTLIST elementName attributeName1 attributeType attributeDefault ....... attributeNameN attributeType attributeDefault 属性类型 (Attribute Type) CDATA该属性只能包含字符数据(注意与CDATA段、PCDATA的区别) NMTOKEN 是CDATA的子集它的字符只能是字母,数字,句点,破折号,下划线或冒号。 NMTOKENS 类似NMTOKEN但这个可以包含多个值每个值之间用空格隔开。 ID 该属性的取值在同一文档内是唯一的。一个元素只能有一个ID类型的属性。 IDREF 类似指针指向文档中其他地方声明的ID值。如果该属性取值和指向的ID值不匹配则返回错误。 IDREFS 类似IDREF但它可以具有由空格分隔开的多个引用。 ENTITY 该属性的值必须对应一个在文档内部声明的但还没有分析过的实体。 ENTITYS 类似ENTITY但它可以包含由空格分隔开的多个实体。 NOTATION 该属性的值必须引用在文档中其他地方声明的某个注释的名称。 (enumerated) 类似枚举的变量该属性必须匹配所列的值。各值用“|”分隔开。 如 (春|夏|秋|冬) 实际内容文档只能从中取一个。 属性特性 (Attribute Default) #REQUIRED 必须有且只能有一个属性。 #IMPLIED 可有可无。 #FIXED 在DTD中定义默认值XML中可以不指定指定则必须等于该默认值。 attribute-value 如果不指定则用DTD定义的默认值指定则用指定的值。 ![CDATA[############ 属性(ATTLIST)的举例 ############## ]] 例一#REQUIRED DTD中 !ELEMENT el (#PCDATA) !ATTLIST el at1 NMTOKENS #REQUIRED at2 CDATA #REQUIRED XML中正确 el at1 10 20 at210 something/el XML中错误 el at10something/el (没有写另一个#REQUIRED的属性 at2 ) 例二(#IMPLIED#FIXED) DTD中 !ELEMENT el (#PCDATA) !ATTLIST el at CDATA #FIXED 10 at2 CDATA #IMPLIED XML中正确 el at220 something/el at有默认值10at2 可写可不写) XML中错误 el at11 something/elat要么不写要写只能写成跟默认值相同的 例三(attribute-value) DTD中!ELEMENT el (#PCDATA) !ATTLIST el at CDATA 10 at2 CDATA 20 XML中正确 el at11 something/el 例四(enumerated attribute-value) DTD中!ELEMENT el (#PCDATA) !ATTLIST el at (10|20|30) 10 XML中正确 el at20something/el (at要么不写默认值 10要么在(10|20|30)中选一个写) ![CDATA[############ 属性(ATTLIST)举例 完毕 ############## ]] 3) 实体(ENTITY) 可重用的内容声明 在DTD中定义 !ENTITY 实体标志 实体内容 在xml中引用自定义的实体用 实体标志; 代表实体内容。 4) 符号(NOTATION) 不要解析的外部内容的格式声明。 3、 内部实体在xml文件里面写(少用)。 外部实体另外在xml同一文件夹下建立一个dtd文件(提倡) 外部的以下是XML ?xml version1.0 encodingUTF-8 standaloneno?!DOCTYPE root SYSTEM goodsInfo.dtd!--用这句引用外部dtd--rootgoodsInfogoodsNamegoodsName/goodsNamegoodsPricegoodsPrice/goodsPrice/goodsInfo/root以下是名为goodsInfo.dtd文件 !ELEMENT root (goodsInfo)!ELEMENT goodsInfo (goodsName,goodsPrice)!ELEMENT goodsName (#PCDATA)!ELEMENT goodsPrice (#PCDATA) 内部的 ?xml version1.0?!DOCTYPE root [!ELEMENT root(student)!ELEMENT student (#PCDATA)!ENTITY CCTV 中央电视台] !--把DTD文件写在体内--rootstudentstudent watch CCTV;!--使用自定义实体 CCTV--/student/root转载于:https://www.cnblogs.com/LinkinPark/p/5233115.html