Java Web程序开发入门--读书笔记(一)

来源:互联网 发布:linux环境变量的作用 编辑:程序博客网 时间:2024/04/27 20:21

第一章

XML概述:

XML与HTML的比较:

1、 HTML中的标记用来显示数据,XML中的标记用来描述数据的性质和结构

2、 HTML不区分大小写,XML是严格区分

3、 HTML可以有多个根元素,XML有且只有一个

4、 HTML中属性值的引号可用可不用,XML中属性值必须放在引号中

5、 HTML中,空格自动过滤,XML中的空格不会自动删除

6、 HTML中,标记是预定义的,XML中的标记是可以随便定义的,可扩展

XML语法:

         XML声明必须是文档第一行

         文档声明语法格式:

                  <?xml版本信息 [编码信息] [文档独立性信息]?>

                  <?xmlversion=”1.0” encoding=”utf-8” standalone=”yes”?>【文档独立性声明是设置是否依赖外部文档,默认是standalone=”no”;’<?xml’和’?>’这几个之间是没有空格的】

         book.xml

                  <?xmlversion="1.0" encoding="utf-8"?>

<书架>

                          <书>

                                   <书名>Java就业培训教程</书名>

                                   <作者>张孝祥</作者>

                                   <售价>58.00元</售价>

                          </书>

                          <书>

                                   <书名>EJB3.0入门经典</书名>

                                   <作者>黎活明</作者>

                                   <售价>39.00元</售价>

                          </书>

</书架>

         元素定义:

                  <城市>北京</城市>

等同:

<城市北京/>【见怪不怪】

                  元素名称可以包含自字母、数字以及一些可见字符

                  区分大小写

                  其他:简而言之,不要取一些奇怪的元素名字组合

         属性定义:

                  <售价 单位=”元”>68<售价/>【单位=’元’,单引号或者双引号都可以】

                  同:

                  <售价>

<价格>68</价格>

<单位>元</单位>

</售价>

         注释:

                  <!—注释信息-->

1、不能抢占第一行,第一行是XML文档声明的

2、不能出现在标记里面【<城市<!—注释信息-->>北京</城市>,wrong】

3、字符串”--”不能在注释中出现

4、不能嵌套【白痴才会去嵌套】

特殊字符处理:

特殊字符

预定义实体

特殊字符

预定义实体

&

&amp

&quot

&lt

&apos

&gt

 

 

         CDATA区:

                  当转义字符比较多的时候,嫌麻烦就用这个,CDATA区中的数据被解析器忽略,全部以原始的形式显示在浏览器上

                  <![CDATA[--代码信息--]]>

                  <?xmlversion="1.0" encoding="utf-8"?>

<java>

                  <![CDATA[

                           if(a>b&&c<b)

                          max=a;   

                  ]]>

</java>   

DTD约束:

         对XML文档进行一些约束

         book.xml

         <?xmlversion="1.0" encoding="utf-8"?>

<书架>

                  <书>

                          <书名>Java就业培训教程</书名>

                          <售价>8.00元</售价>

                          <作者>张孝祥</作者>

                          <售价>58.00元</售价>

                 

                  </书>

                  <书>

                          <书名>EJB3.0入门经典</书名>

                          <作者>黎活明</作者>

                          <售价>39.00元</售价>

                  </书>

</书架>

book.dtd

         <!ELEMENT书架(书+)>

<!ELEMENT 书(书名,作者,售价)>

<!ELEMENT 书名(#PCDATA)>

<!ELEMENT 作者(#PCDATA)>

<!ELEMENT 售价(#PCDATA)>

两种引入方式

         外部引用:

                  <!DOCTYPE 根元素名称 SYSTEM “外部DTD文件的URI”>【本地】

                  <!DOCTYPE 根元素名称 PUBLIC “DTD名称” “外部DTD文件的URI”>【网络】

 

                  <?xmlversion="1.0" encoding="utf-8"?>

<!DOCTYPE 书架 SYSTEM "book.dtd">

<书架>

                          <书>

                                   <书名>Java就业培训教程</书名>

                                   <售价>8.00元</售价>

                                   <作者>张孝祥</作者>

                                   <售价>58.00元</售价>

                 

                          </书>

                          <书>

                                   <书名>EJB3.0入门经典</书名>

                                   <作者>黎活明</作者>

                                   <售价>39.00元</售价>

                          </书>

</书架>

【standalone不能设置为yes】

内部引用:

         <?xmlversion="1.0" encoding="utf-8"standalone="yes"?>

         <!DOCTYPE 根元素名 [

         DTD定义语句

         …

]>

 

<?xml version="1.0" encoding="utf-8"standalone="yes"?>

<!--<!DOCTYPE 书架 SYSTEM "book.dtd">-->

<!DOCTYPE 书架 [

         <!--<!ELEMENT 书架(书+)>-->

         <!ELEMENT 书 (书名,作者,售价)>

         <!ELEMENT 书名(#PCDATA)>

         <!ELEMENT 作者(#PCDATA)>

         <!ELEMENT 售价(#PCDATA)>

]>

<书架>

         <书>

                  <书名>Java就业培训教程</书名>

                  <作者>张孝祥</作者>

                  <售价>58.00元</售价>

                 

         </书>

         <书>

                  <书名>EJB3.0入门经典</书名>

                  <作者>黎活明</作者>

                  <售价>39.00元</售价>

         </书>

</书架>

         DTD语法:

                  元素定义:

                          <!ELEMENT元素名称 元素内容>

                                   元素内容有五种形式:

                                            1、#PCDATA:普通文本字符串【<!ELEMENT书名 (#PCDATA)>】

                                            2、子元素:元素包含的元素【<!ELEMENT书(书名,作者,售价)>】

3、混合内容:表示元素既可以包含字符数据,也可以包含子元素,混合内容必须被定义零个或多个【<!ELEMENT 书(#PCDATA|书名)>,表示书中嵌套的子元素书名包含零个或多个,并且书名是字符串文本格式】

4、EMPTY:空元素【<!ELEMENTbr EMPTY>,br是没有内容的空元素】

5、ANY:包含任何字符数据和子元素【<!ELEMENT 联系人 ANY>】

                                   元素内容中包含一些符号:

                                            ?:表示该对象可以出现0次或者1次

                                            *:表示该对象可以出现0次或者多次

                                            +:表示该对象可以出现1次或者多次

                                            |:表示在列出的对象中选择1个

                                            ,:表示对象必须按照指定的顺序出现

                                            ():用于给元素进行分组

         属性定义:

                  语法格式:

                          <!ATTLIST元素名

                                   属性名1 属性类型 设置说明

                                   属性名2 属性类型 设置说明

                          设置说明:

                                   #REQUIRED:表示元素的该属性是必须的【联系人的联系电话属性】

                                   #IMPLIED:表示该属性对元素可有可无

                                   #FIXED:固定的属性默认值

                                   默认值:同上

                          属性类型:

1、 CDATA:字符数据,同元素内容说明中的#PCDATA

2、 Enumerated:枚举,列表中选一个

<?xmlversion="1.0" encoding="utf-8"standalone="yes"?>

<!DOCTYPE购物篮 [

          <!ELEMENT 购物篮 ANY>

          <!ELEMENT 肉 EMPTY>

          <!ATTLIST 肉 品种 (鸡肉|牛肉|猪肉|鱼肉) "鸡肉">

]>

 

<购物篮>

          <肉 品种="鱼肉"/>

          <肉 品种="牛肉"/>

          <肉/>

</购物篮>

3、 ID:用于唯一标识XML文档中的一个元素,且ID类型的属性必须设置为#IMPLIED或#REQUIRED【都ID了,肯定具有唯一性】

4、 IDREF和IDREFS:建立关系

<?xmlversion="1.0" encoding="utf-8"?>

<!DOCTYPE联系人列表 [

         <!ELEMENT联系人列表 ANY>

         <!ELEMENT联系人 (姓名,EMAIL)>

         <!ELEMENT姓名 (#PCDATA)>

         <!ELEMENTEMAIL (#PCDATA)>

         <!ATTLIST联系人 编号 ID#REQUIRED 上司 IDREF #IMPLIED>

]>

<联系人列表>

<联系人 编号="id1">

          <姓名>张三</姓名>

          <EMAIL>zhangsan@qq.com</EMAIL>

</联系人>

<联系人 编号="id2" 上司="id1">

          <姓名>李四</姓名>

          <EMAIL>lisi@qq.com</EMAIL>

</联系人>

</联系人列表>

5、 NMTOKEN和NOTAKENS:表示由一个或者多个字母、数字、句点(。)、连字号(-)或下划线(_)所组成的一个名称【不太懂】

6、 NOTATION:处理图像、声音、影像等

第一种:<!NOTATION 符号名 SYSTEM “MIME类型”>

第二种:<!NOTATION 符号名 SYSTEM “URI路径名”>

<?xmlversion="1.0" encoding="utf-8"standalone="yes"?>

<!DOCTYPE文件 [

         <!NOTATIONmp SYSTEM "movPlayer.exe">

         <!NOTATIONgif SYSTEM "Image/gif">

          <!ELEMENT 文件 ANY>

          <!ELEMENT 电影 EMPTY>

          <!ATTLIST 电影 演示设备 NOTATION(mp|gif) #REQUIRED>

]>

<文件>

          <电影 演示设备="mp"/>

</文件>

7、 ENTITY和ENTITYS:实体引用

1、引用实体:

<?xmlversion="1.0" encoding="utf-8"standalone="yes"?>

<!DOCTYPE书架 [

          <!ENTITY itcast "你好哇!!!">

          <!ELEMENT 书 (书名,作者,售价)>

          <!ELEMENT 书名(#PCDATA)>

          <!ELEMENT 作者(#PCDATA)>

          <!ELEMENT 售价(#PCDATA)>

]>

<书架>

<书>

                   <书名>Java就业培训教程</书名>

                   <作者>&itcast;</作者>

                   <售价>58.00元</售价>

         

          </书>

          <书>

                   <书名>EJB3.0入门经典</书名>

                   <作者>黎活明</作者>

                   <售价>39.00元</售价>

          </书>

</书架>

                                            2、参数实体:

                                                     <!ENTITY%实体名称 “实体内容”>

                                                    

                                                     <!ELEMENT%TAG_NAME “姓名|EMAIL|电话|地址”>

                                                     <!ELEMENT个人信息 (% TAG_NAME;|生日)>

                                                     <!ELEMENT客户信息 (%TAG_NAME;|公司名)>

                                                     【相同的部分定义为一个参数实体】

<!ENTITY % common.attributes‘id ID #IMPLIED  account CDATA #REQUIRED’>【属性的相同定义】

Schema约束:

         要有命名空间:

         Schema语法:

                  元素定义:

                          <xs:elementname=”xxx” type=”yyy”/>                        

xs:string

xs:decimal

xs:integer

xs:boolean

xs:date

xs:time

字符串类型

小数类型

整数类型

布尔类型

日期类型

时间类型

 

XML代码:

<lasename>Smith</lastname>

<age>28</age>

<dateborn>1980-03-27</dateborn>

Schema代码:

<xs:element name=”lastname” type=”xs:string”>

<xs:element name=”age” type=”xs:integer”>

<xs:element name=”databorn” type=”xs:date”>

属性的定义:

<xs:attribute name=”xxx” type=”yyy”>

example:

<lastname lang=”EN”>Smith</lastname>

<xs:attribute name=”lang” type=”xs:string”>

简单类型:

         只包含字符数据的元素都是简单类型,使用xs:simpleType元素来定义

         添加限制,需要用到xs:restriction元素

1、 xs:minInclusive和xs:maxInclusive元素对值得限定

<xs:element name=”age”>

<xs:simpleType>

  <xs:restriction baxe=”xs:string”>

<xs:minInclusive value=”18”/>

<xs:maxInclusive value=”58”/>

  </xs:restriction>

</xs:simpleType>

</xs:element>

2、xs:enumberation元素对一组值得限定

<xs:element name=”car”>

<xs:simpleType>

 <xs:restriction baxe=”xs:string”>

<xs:enumberation value=”Audi”/>

<xs:enumberation value=”Golf”/>

<xs:enumberation value=”BMW”/>

 </xs:restriction>

</xs:simpleType>

</xs:element>

                  3、xs:pattern元素对一系列值得限定

                 

<xs:element name=”letter”>

<xs:simpleType>

 <xs:restriction baxe=”xs:string”>

<xs:pattern value=”[a-z]”/>

</xs:restriction>

</xs:simpleType>

</xs:element>

                  4、xs:whiteSpace元素对空白字符的限定

<xs:element name=”car”>

<xs:simpleType>

 <xs:restriction baxe=”xs:string”>

<xs:whiteSpace value=”preserve”/>

</xs:restriction>

</xs:simpleType>

</xs:element>

preserve:不处理

replace:移除

collapse:所以缩减为一个单一字符

复杂类型:

         使用xs:complexContent元素来定义

         复杂类型的元素可以包含子元素和属性,称为复合元素;如果复合元素十五开始标记和结束标记之间只包含字符数据内容,使用xs:simpleContent,否则,使用xs:complexContent

1、 空元素:

不包含内容,只包含属性

<product prodid=”1234”/>

Schema:

<xs:element name=”product”>

  <xs:complexType>

    <xs:attribute name=”prodid” type=”xs:positiveInteger”> 

  </xs:complexType>

</xs:element>

 

2、 包含其他元素的元素:

<person>

 <firstname>John</firstname>

 <lastname>Smith</lastname>

</person>

Schema:

<xs:element name=”product”>

<xs:complexType>

  <xs:sequence> 

    <xs:element name=”firstname” type=”xs:string”> 

    <xs:element name=”lastname” type=”xs:string”>

  </xs:squence>

 </xs:complexType>

</xs:element>

 

3、 仅包含文本的元素:

需要使用extension或restriction元素来扩展或限制元素的基本简易类型

<shoesize country=”france”>35</shoesize>

Schema:

<xs:element name=”product”>

<xs:complexType>

<xs:simpleContent>

 <xs:extension>

        <xs:attribute name=”country” type=”xs:string”>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

 

4、 包含元素和文本的元素

<letter>

 Dear Mr.<name>John Smith</name>

 Your order<order>1032</order>

 will be shipped on<shipdate>2001-07-13</shipdate>

</letter>

Schema:

<xs:element name=”letter”>

 <xs:complexType mixed=”true”>

  <xs:sequence>

   <xs:element name=”name” type=”xs:string”/>

   <xs:element name=”orderid” type=”xs:positiveInteger”/>

   <xs:element name=”shipdate” type=”xs:date”/>

</xs:sequence>

</xs:complexType>

</xs:element>

 

0 0
原创粉丝点击