苦尽甘来 一个月学通JavaWeb(六 XML)

夜光序言:

什么是幸福?

 

有的人认为,和风细雨是幸福。

 

有的人认为,知足常乐是幸福。

 

但我却不这么认为。

 

容易满足的人总会看不到前进的方向,只能原地踏步。

 

人的一生只有几十年,为什么要庸庸碌碌?

 

所以我的幸福来自于贪婪,唯有贪得无厌才是人前进的动力。才能带给我们美妙的成就感,更好的去感受这个世界。

 

 

正文:坚持到这里了么,或许才是开始~~深邃的双眸中坚毅的神采一抹而去...........

Schema

Schema概述

我们学习Schema的第一目标是:参照Schema的要求可以编写XML文档;

第二目标是:可以自己来定义Schema文档。

1 Schema是什么

XML文档的约束,用来替代DTD。

DTD文档不是XML语法,而Schema本身也是XML文档,这对解析器来说不用再去处理非XML的文档了;

DTD只能表述平台线束,而Schema本身也是XML,所以可以描述结构化的约束信息。

DTD不只约束元素或属性的类型,但Schema可以。例如让age属性的取值在0~100之间。

Schema文档的扩展名为xsd,即XML Schema Definition。

 

为students.xml编写DTD

 

<!ELEMENT students (student+)>

<!ELEMENT student (name,age,sex)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>

<!ELEMENT sex (#PCDATA)>

<!ATTLIST student number CDATA #REQUIRED>

 

为students.xml编写schema       :      亲切感~~

理解每一句话~~

 

<?xml version="1.0"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

// 夜光:schema文档的根元素,其中xmlns这个东东是与名称空间相关的东东,先不用理会它,只需要照着写就行了

<xsd:element name="students" type="studentsType"/>  //新建一个元素,名字为students,这个元素的类型为studentsType,这个类型在下面创建的。

<xsd:complexType name="studentsType">

<xsd:sequence>

<xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>

<xsd:complexType name="studentType">

<xsd:sequence>

<xsd:element name="name" type="xsd:string"/>

<xsd:element name="age">

<xsd:simpleType>

<xsd:restriction base="xsd:integer">

<xsd:maxInclusive value="100"/>

<xsd:minInclusive value="0"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

<xsd:element name="sex">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:enumeration value="男"/>

<xsd:enumeration value="女"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

</xsd:sequence>

<xsd:attribute name="number" type="xsd:string"/>

</xsd:complexType>

</xsd:schema>

参照Schema编写XML文档

  我们参照上面的Schema文档编写一个studens.xml文件

 

<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="students.xsd">
    <student number="ID_1001">
        <name>Genius</name>
        <age>1111</age>
        <sex></sex>
    </student>
    <student number="ID_1002">
        <name>girl</name>
        <age>1111</age>
        <sex></sex>
    </student>
    <student number="ID_1003">
        <name>Genius</name>
        <age>11</age>
        <sex></sex>
    </student>
</students> 

名称空间相关内容

XSD文档中是创建元素和属性的地方;

XML文档中是使用元素和属性的地方。

所以在XML文档中需要说明使用了哪些XSD文档。

1 什么是名称空间

名称空间是用来处理XML元素或属性的名字冲突问题。你可以理解为Java中的包~~

包的作用就是用来处理类的名字冲突问题。

注意:XML与Java有很大区别,虽然都是处理名字冲突问题,但语法上是有很大区别的。例如在Java中可以使用import来导入类,但你一定要保存你导入的类已经在类路径(classpath)中存在。使用package为当前Java文件中所有类声明名。但XML的名称空间要比Java复杂很多。

我们在下面讲解XML名称空间时,会使用Java包的概念来理解XML的名称空间的概念,所以现在大家就要注意这么几个特性:

  1. import:导包,声明名称空间;
  2. package:定义包,指定目标名称空间;
  1. classpath:添加到类路径,关联XSD文件

2   声明名称空间(导包)

无论是在XML中,还是在XSD中,都需要声明名称空间。这与Java中使用import来导包是一个道理。当然,前提是有包(创建类是使用了package)才可以导,没包就不能导了。如果被定义的元素在声明时没有指定目标名称空间,那么就是在无名称空间中,那么我们在使用这些在无名称空间中的元素时,就不用再去声明名称空间了。

声明名称空间使用xmlns,例如:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"。这表示声明了一个名称空间,相当与Java中的import。但是,Java中的import的含义是在下面使用的类,如果没有给出包名,那么就是import导入的这个类。而xmlns表示,下面使用xsi为前缀的元素或属性,都是来自http://www.w3.org/2001/XMLSchema-instance名称空间。也就是说给名称空间起了一个简称,这就相当于我们称呼“北京传智播客教育科技有限公司”为“传智”一样。“传智”就是简称。

例如在XSD文件中,xmlns:xsd="http://www.w3.org/2001/XMLSchema"就是声明名称空间,而这个名称空间是W3C的名称空间,无需关联文件就可以直接声明!在XSD文件中所有使用xsd为前面的元素和属性都是来自http://www.w3.org/2001/XMLSchema名称空间。

名称空间命名:一般名称空间都是以公司的URL来命名,即网址!当然也可以给名称空间命名为aa、bb之类的名字,但这可能会导致名称空间的重名问题。

前缀命名:前缀的命名没有什么要求,但一般对http://www.w3.org/2001/XMLSchema名称空间的前缀都是使用xs或xsd。http://www.w3.org/2001/XMLSchema-instance的前缀使用xsi。

在XML文档中声明xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"名称空间的目的是使用xsi中的一个属性:xsi:noNamespaceSchemaLocation,它是用W3C提供的库属性,用来关联XSD文件用的。当然,它只能关联那些没有“目标名称空间”的XSD文件。下面会讲解目标名称空间!

 

3 默认名称空间

所谓默认名称空间就是在声明名称空间时,不指定前缀,也可以理解为前缀为空字符串的意思。这样定义元素时,如果没有指定前缀的元素都是在使用默认名称空间中的元素。

xmlns=”http://www.itcast.cn”

当在文档中使用<xxx>时,那么<xxx>元素就是http://www.itcast.cn名称空间中声明的元素。

注意:没有指定前缀的属性不表示在默认名称空间中,而是表示没有名称空间。也就是说,默认名称空间不会涉及到属性,只对元素有效!

XPath(夜光:扩展)

XPath概述

 

1 什么是XPath

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是 XPath 很快的被开发者采用来当作小型查询语言。

 

2 DOM4J对XPath的支持

在DOM4J中,Node接口中的三个方法最为常用: 

  1. List selectNodes(String xpathExpression):在当前节点中查找满足XPath表达式的所有子节点;
  2. Node selectSingleNode(String xpathExpression):在当前节点中查找满足XPath表达式的第一个子节点;
  3. String valueOf(String xpathExpression):在当前节点中查找满足XPath表达式的第一个子节点的文本内容;

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值