标签:XML 标签 基础 DTD 文档 employee 节点
XML的全称是EXtensible Markup Language,可扩展标记语言 XML文档结构 有且只有一个根节点。 第一行必须是XML声明。 XML标签的书写规则与HTML相同。 XML声明 XML声明说明XML文档的基本信息,包括版本号与字符集,写在XML第一行。 <?xml version="1.0" encoding="UTF-8"?> version 代表版本号1.0/1.1 encoding UTF-8设置字符集,用于支持中文 处理特殊字符 标签体中,出现"<"、">"特殊字符,会破坏文档结构。 解决方案1:使用实体引用。 解决方案2:使用CDATA标签。
无效的XML: <exam> <question>1+4<3是否正确?</question> <question>3+5>8是否正确?</question> </exam>
修改后的XML <exam> <question>1+4<3是否正确?</question> <question>3+5>8是否正确?</question> </exam>
CDATA标签 1.CDATA指的是不应由XML 解析器进行解析的文本数据 2.从"<![CDATA[" 开始,到"]]>"结束 例如: <lesson> <content> <![CDATA[html中标签的使用:a<body><a href="index.html">首页</a></body>]]> </content> </lesson>
页面效果如下:
XML语义约束 XML语义约束有两种定义方式:DTD与XMLSchema。 DTD 1.DTD(Document Type Definition,文档类型定义是)一种简单易用的语义约束方式。 2.DTD文件的扩展名为.dtd。 DTD定义节点 利用DTD中的标签,我们可以定义XML文档中允 许出现的节点及数量,以hr.xml为例: 定义hr节点下只允许出现1个employee子节点。 <!ELEMENT hr (employee)> employee节点下必须包含以下四个节点,且按顺序出现。 <!ELEMENT employee (name,age,salary,department)> 定义name标签体只能是文本,#PCDATA代表文本元素。 <!ELEMENT name (#PCDATA)> DTD定义节点数量 如某个子节点需要多次重复出现,则需要在子节点后增加相应的描述符。 hr节点下最少出现1个employee子节点。 <!ELEMENT hr (employee+)> hr节点下可出现0..n个employee子节点。 <!ELEMENT hr (employee*)> hr节点下最多出现1个employee子节点。 <!ELEMENT hr (employee?)> //employee标签内有 name,age,salary,department子标签 <!ELEMENT employee (name,age,salary,department)> //基本语法:<!ATTLIST 元素名称 属性名称 属性类型 默认值> //CDATA:字符或数字 <!ATTLIST employee no CDATA ""> //在DTD中,指定某个标签中的内容是字符数据时,使用(#PCDATA) //定义name标签体只能是文本,#PCDATA代表文本元素。 <!ELEMENT name (#PCDATA)> ... XML中引用dtd文件: 在xml文件中使用<!DOCTYPE>标签来引用DTD文件 书写格式: <!DOCTYPE 根节点 SYSTEM "dtd文件路径"> 示例:<!DOCTYPE hr SYSTEM "hr.dtd"> XML Schema 1.XML Schema比DTD更为复杂,提供了更多功能。 2.XML Schema 提供了数据类型、格式限定、数据范围等特性。 Dom4j Dom4j是一个易用的、开源的库,用于解析XML。它 应用于Java平台,具有性能优异、功能强大和极其易使 用的特点。 Dom4j将XML视为Document对象。 XML标签被Dom4j定义为Element对象 XPath路径表达式 XPath路径表达式是XML 文档中查找数据的语言。 常用的基本表达式 nodename:选取此节点的所有子节点 /:从根节点选取 //:从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 .:选取当前节点 ..:选取当前节点的父节点 @:选取属性
标签:XML,标签,基础,DTD,文档,employee,节点 来源: https://www.cnblogs.com/ljc1212/p/14505022.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。