/* xml概述 什么是XML XML :可扩展标记语言(EXtensible Markup Language) XML 它是一种标记语言,很类似 HTML,HTML文件也是XML文档,标签都是自定义的。 如:<user></user> 或 <student></student> W3C在1988年2月发布1.0版本,2004年2月又发布1.1版本,单因为1.1版本不能向下兼容1.0版本,所以1.1没有人用。同时,在2004年2月W3C又发布了1.0版本的第三版。我们要学习的还是1.0版本。 XML 与 HTML 的主要差异 xml标签都是自定义的,html标签是预定义。 xml的语法严格,html语法松散。 xml是存储数据的,html是展示数据。 xml的作用 存放数据 <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="p001"> <name>张三</name> </person> <person id="p002"> <name>李四</name> </person> </persons> 类似于java代码 class Person{ String id; String name; } public void test(){ HashSet<Person> persons = new HashSet<Person>(); persons.add( new Person("p001","张三") ); persons.add( new Person("p002","李四") ); } • 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans> <bean className="com.itheima_00_Bean.User"> <property name="username" value="jack"></property> </bean> </beans> 类似于java代码 class Bean{ private String username; private String pws; //补全set\get方法 } import com.itheima_00_Bean.User; public static void main(){ Class clzzz = Class.forName("com.itheima_00_Bean.User"); Object obj = clazz.newInstance(); Method method = clazz.getMethod("setUsername",String.class); method.invoke(obj,"jack"); } xml的组成元素 文档声明 XML文档声明格式: <?xml version="1.0" encoding="UTF-8"?> 1. 文档声明必须为结束; 2. 文档声明必须从文档的0行0列位置开始; 3. 文档声明只有2个属性: 1. versioin:指定XML文档版本。必须属性,因为我们不会选择1.1,只会选择1.0; 2. encoding:指定当前文档的编码。可选属性,默认值是utf-8; 元素 元素 element <bean></bean> 1. 元素是XML文档中最重要的组成部分, 2. 普通元素的结构开始标签、元素体、结束标签组成。例如:大家好 3. 元素体:元素体可以是元素,也可以是文本,例如:你好 4. 空元素:空元素只有开始标签,而没有结束标签,但元素必须自己闭合,例如: 5. 元素命名: 1. 区分大小写 2. 不能使用空格,不能使用冒号: 3. 不建议以XML、xml、Xml开头 格式化良好的XML文档,必须只有一个根元素。 属性 属性 attribute <beanid="" className=""> 1. 属性是元素的一部分,它必须出现在元素的开始标签中 2. 属性的定义格式:属性名=属性值,其中属性值必须使用单引或双引 3. 一个元素可以有0~N个属性,但一个元素中不能出现同名属性 4. 属性名不能使用空格、冒号等特殊字符,且必须以字母开头 5.2.4 注释 XML的注释,以“<!--”开始 以“-->”结束。注释内容会被XML解析器忽略! 5.2.5 转义字符 因为很多符号已经被XML文档结构所使用,所以在元素体或属性值中想使用这些符号就必须使用转义字符,例如:“<”、“>”、“’”、“””、“&”。 */ public class day01 { }
因为很多符号已经被XML文档结构所使用,所以在元素体或属性值中想使用这些符号就必须使用转义字符,例如

/* xml约束 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。 常见的xml约束:DTD、Schema DTA约束 什么是DTD? DTD(Document Type Definition),文档类型定义,用来约束XML文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。 DTD重点要求 开发中,我们很少自己编写DTD约束文档,通常情况我们都是通过框架提供的DTD约束文档,编写对应的XML文档。常见框架使用DTD约束有:struts2、hibernate等。 通过提供的DTD“bean.dtd”编写XML <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT beans (bean*,import*) > <!ELEMENT bean (property*)> <!ELEMENT property (#PCDATA)> <!ELEMENT import (#PCDATA)> <!ATTLIST bean id CDATA #REQUIRED className CDATA #REQUIRED > <!ATTLIST property name CDATA #REQUIRED value CDATA #REQUIRED > <!ATTLIST import resource CDATA #REQUIRED> */ public class day01 { }
web-app_2_3.dtd
<?xml version="1.0" encoding="UTF-8"?> <!-- 模拟servlet2.3规范,如果开发人员需要在xml使用当前DTD约束,必须包括DOCTYPE。 格式如下: <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd"> --> <!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) > <!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))> <!ELEMENT servlet-mapping (servlet-name,url-pattern+) > <!ELEMENT servlet-name (#PCDATA)> <!ELEMENT servlet-class (#PCDATA)> <!ELEMENT url-pattern (#PCDATA)> <!ELEMENT description (#PCDATA)> <!ELEMENT jsp-file (#PCDATA)> <!ELEMENT welcome-file-list (welcome-file+)> <!ELEMENT welcome-file (#PCDATA)> <!ATTLIST web-app version CDATA #IMPLIED>
怼到*.xml目录下 写起xml就有提示了
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd"> <web-app version="1.0"> <servlet> <servlet-name></servlet-name> <servlet-class></servlet-class> </servlet> <servlet-mapping> <servlet-name></servlet-name> <url-pattern></url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file></welcome-file> </welcome-file-list> </web-app>
Schema约束
什么是Schema?
Schema是新的XML文档约束; Schema要比DTD强大很多,是DTD 替代者; Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml。 Schema 功能更强大,数据类型更完善 Schema 支持名称空间
Schema重点要求
与DTD一样,要求可以通过schema约束文档编写xml文档。
web-app_2_5.xsd
<?xml version="1.0" encoding="UTF-8"?> <!-- 模拟servlet2.5规范,如果开发人员需要在xml使用当前Schema约束,必须包括指定命名空间。 格式如下: <web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" version="2.5"> --> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/web-app_2_5" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.example.org/web-app_2_5" elementFormDefault="qualified"> <xsd:element name="web-app"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element name="servlet"> <xsd:complexType> <xsd:sequence> <xsd:element name="servlet-name"></xsd:element> <xsd:element name="servlet-class"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="servlet-mapping"> <xsd:complexType> <xsd:sequence> <xsd:element name="servlet-name"></xsd:element> <xsd:element name="url-pattern" maxOccurs="unbounded"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="welcome-file-list"> <xsd:complexType> <xsd:sequence> <xsd:element name="welcome-file" maxOccurs="unbounded"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:choice> <xsd:attribute name="version" type="double" use="optional"></xsd:attribute> </xsd:complexType> </xsd:element> </xsd:schema>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>xxxxxxxxxx</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
什么是命名空间
如果一个XML文档中使用多个Schema文件,而这些Schema文件中定义了相同名称的元素时就会出现名字冲突。这就像一个Java文件中使用了import java.util.和import java.sql.时,在使用Date类时,那么就不明确Date是哪个包下的Date了。
总之名称空间就是用来处理元素和属性的名称冲突问题,与Java中的包是同一用途。如果每个元素和属性都有自己的名称空间,那么就不会出现名字冲突问题,就像是每个类都有自己所在的包一样,那么类名就不会出现冲突。
约束文档和xml关系
当W3C提出Schema约束规范时,就提供“官方约束文档”。我们通过官方文档,必须“自定义schema 约束文档”,开发中“自定义文档”由框架编写者提供。我们提供“自定义文档”限定,编写出自己的xml文档。

声明命名空间
默认命名空间:<xxx xmlns=””>,使用<标签>
显式命名空间:<xxx xmlns:别名=””>,使用<别名:标签>

浙公网安备 33010602011771号