虽然已经用了这么多年的xml了,因为很简单,所以从来没有系统学习过,有一些关键点不需要知道也可以使用,
因此一直没有重视,好吧,前面的是废话。重点是求知欲不够强。面试也基本不会问这个,所以就逃避了,但内心是拒绝的。
本文不会从0开始认识xml,而是在使用了n年后再完整学习后发现的知识盲区。
学习地址:
下面是再学习到的知识点:
- xml必须有一个根结点,结构是树;
- 大小写敏感,标签必须关闭
- 特殊实体引用(特殊符号):
>(>),<(<),&(&),'('),"(")
- 对扩展开放: 就是增加标签不影响解析
- 什么时候使用属性: 属性不是数据,而是元数据,可以对比HTML标签的属性
上面的是只关乎XML的知识,下面的涉及更广,更难一点:
首先明确一点: 形式良好和合法。
拥有正确语法的 XML 被称为”形式良好”的 XML。
通过 DTD 验证的XML是”合法”的 XML。
- 什么是DTD?
DTD(Document Type Define),作用是定义 XML 文档的合法构建模块,可以验证xml是否合法。具体参考DTD教程。
DTD语法很简单,表示2个东西: 有哪些标签(ELEMENT,ATTLIST,ENTITY),标签的类型(#PCDATA, CDATA等)和结构:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- Edited by XMLSpy® -->
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note> - 当然,验证合法性不只一种,Schema被开发出来代替DTD:
- Schema: 描述了XML文档的结构,比DTD更强大,所以复杂一点。具体教程
- 我只希望花5分钟学习schema,没啥,因为我时间宝贵,那么我只会用一个例子+几句话。
1. schema基本上已经取代DTD,2001年发布, 文件格式: *.xsd
2. schema是由XML来书写的,好处很多, 比DTD强大的地方就在于丰富的数据类型(boolean,string,decimal,integer,date,time)
3. 下面是如何引用schema:- 声明当前域名空间:
xmlns="http://java.sun.com/xml/ns/javaee"
- 声明XML Schema 命名空间实例:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 使用
schemaLocation
引用xsd文件:xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- 这个例子就是
web.xml
:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>JimoMvc</servlet-name>
<servlet-class>com.jimo.mvc.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>application.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JimoMvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
- 声明当前域名空间:
当然,现在我心里不慌了,后面还有一些更高级的东西,直到需要的时候再研究把,为啥? 因为我时间宝贵呀!