xml的应用和解析

一、xml的dtd限制和应用

  1. DTD限制servlet相关标签
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app[
	<!ELEMENT web-app ( display-name,welcome-file-list,servlet,servlet-mapping)>
	<!ELEMENT servlet (servlet-name,servlet-class)>
	<!ELEMENT servlet-mapping (servlet-name,url-pattern)>
	<!ELEMENT servlet-name (#PCDATA)>
	<!ELEMENT servlet-class (#PCDATA)>
	<!ELEMENT url-pattern (#PCDATA)>
	<!ATTLIST web-app
		xmlns:xsi  CDATA #REQUIRED
		xmlns CDATA #IMPLIED
		xsi:schemaLocation CDATA #IMPLIED
		id CDATA #IMPLIED
		version CDATA #IMPLIED
	>
]>


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Xml</display-name>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>IndexServlet</servlet-name>
  	<servlet-class>com.IndexServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>IndexServlet</servlet-name>
  	<url-pattern>/index.do</url-pattern>
  </servlet-mapping>
</web-app>
  1. 什么是格式良好且有效的XML
  • 文档必须有根元素,有且只有一个根元素

    元素定义的语法		
    		 <!ELEMENT element-name (type)>
    		 注:根标签也要定义!!!
    
  • XML标签大小写正确区分

  • 正确使用结束标签,文档必须有关闭标签

  • 正确嵌套标签,元素必须被正确的嵌套

  • 使用了合法的标签名

  • 定义有效的属性
    元素的分类

	<!ELEMENT element-name EMPTY>//空元素
   <!ELEMENT element-name (#PCDATA)>//文本元素
   <!ELEMENT element-name (e1,e2)>//混合元素
属性定义的语法
#REQUIRED
#IMPLIED

  1. DTD限制xml文档
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config [
	
	<!ELEMENT config (action*)>
	<!ELEMENT action (forward*)>

	<!ATTLIST action
		path  CDATA #REQUIRED
		type CDATA #IMPLIED
	>
	<!ATTLIST forward
		name  ID #REQUIRED
		path  CDATA #REQUIRED
		redirect  (true|false) 'true'
	>
	
]>

	<!--
		config标签:可以包含0~N个action标签
	-->
<config>
	<!--
		action标签:可以饱含0~N个forward标签 path:/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径
		type:字符串,非空,子控制器的完整类名
	-->
	<action path="/registerAction" type="test.action.RegisterAction">
		<forward name="success" path="/index.jsp" redirect="true" />
		<forward name="failed" path="/register.jsp" redirect="false" />
	</action>
	<action path="/loginAction" type="test.action.LoginAction">
		<forward name="a" path="/index.jsp" redirect="false" />
		<forward name="b" path="/welcome.jsp" redirect="true" />
	</action>
</config>
  1. xml的解析
  • XML(eXtensive Markup Language)可扩展的标记语言,是万维网联盟(World Wide Web Consortium W3C)定义的一种标准。 可扩展性指允许用户按照XML规则自定义标记(tags 标签)。
  • 作用:
    作为微型数据库,存储数据;
    作为通信数据;
    用于不同平台,不用系统交换数据;
    作为配置文件,为应用程序配置数据;
    结合样式表语言,展示数据。
  • 强项:轻松表达多层结构的数据;可扩展。
  • 优点:平台无关,语言无关。设计目标是描述数据并集中于数据的内容,与显示分离。
  • 提醒:不能用XML来直接写网页。即便是包含了XML数据,依然要转换成HTML格式才能在浏览器上显示。

xml特征 :纯文本 、严格的格式、可扩展(标记可扩展)。

二、Schema的应用

XML Schema介绍

  1. XML Schema用来描述 XML 文档的结构 ,定义XML文档中合法的内容块 ;
  2. XML Schema优于DTD,是DTD的替代品;
  3. XML Schema文件以.xsd作为文件扩展名 ;
  4. XML Schema在2001年5月2日成为W3C标准;
  5. Schema本生也是特殊的XML;

XML Schema文档结构
简单类型(元素,属性,Facet)、复杂类型元素、匿名类型、外置类型。

<xs:element name=“元素名” type=“元素类型"/>

Schema内置了很多类型,常用的类型有:

xs:string 字符串;
xs:decimal 浮点型;
xs:integer 整型;
xs:boolean 布尔型;
xs:date 日期;
xs:time 时间;

xs:是命名空间前缀,元素的默认值用属性default指定,例:

<xs:element name=“color” type=“xs:string” default=“red”/>

元素的固定值用属性fixed指定,例:

<xs:element name=“color” type=“xs:string” fixed=“red”/>

元素出现的次数用属性minOccurs、maxOccurs来表示,默认值为1,unbounded表示不限制次数,例:

<xs:element name=“comment” type=“xs:string” minOccurs=“0”/>
<xs:element name=“item” type=“xs:string” minOccurs=“99” maxOccurs=“unbounded”>

属性声明语法:

<xs:attribute name=“属性名” type=“属性类型"/>

属性声明通常会出现在元素声明中,Schema的内置类型同样对属性类型有效,属性的默认值用属性default指定;

<xs:attribute name=“gender" type=“xs:string” default=“male"/>

属性的固定值用属性fixed指定:

<xs:attribute name=“gender" type=“xs:string” fixed=“male"/>

属性必须或可选性用属性use指定:

<xs:attribute name=“gender" type=“xs:string” use=“required"/>

use属性值的取值有: optional(默认值)(可有可没有), required(必须有), prohibited(禁止,很少用)。

Facet(刻面):对xml元素或属性的简单数据类型进一步约束

  • 限制字符串的长度, 包括 (length、minLength、maxLength) ;
  • 限制整数的大小范围,包括 (minInclusive, maxInclusive, minExclusive, maxExclusive) ;
  • 限制元素内容的枚举取值(enumeration);
  • 限制浮点型数值的位数(totalDigits, fractionDigits) ;

定义在下列元素中:

<xs:simpleType> 
  <xs:restriction> 
   (此处写Facet) 
  </xs:restriction>
</xs:simpleType>

复杂类型元素:包含其他元素和文本或属性的 XML 元素,语法:

使用元素 xs:complexType/ 来定义

四种类型的复杂元素:只包含属性、只包含属性和子元素、只包含文本内容和属性、包含属性,子元素和文本内容。

只包含属性

<xs:element name=‘blank’>
xs:complexType
<xs:attribute name=‘base’ type=‘xs:integer’ use=‘optional’ default=‘10’/>
</xs:complexType>
</xs:element>

只包含属性和子元素

<xs:element name=‘customer’>
xs:complexType
xs:sequence
<xs:element name=‘favor’ type=‘xs:string’/>
</xs:sequence>
<xs:attribute name=‘age’ type=‘xs:integer’/>
</xs:complexType>
</xs:element>

xml的简介在这里插入图片描述

xml的约束在这里插入图片描述
xml解析
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值