JavaWeb學習筆記之XML(1)
文章目錄
相關知識: https://blog.csdn.net/mokexfdgh/article/category/8092196
XML
表單提交方式
提交方式:
<form id="form1">
<input type="text" name="username" />
<!-- 第一種submit -->
<input type="submit" />
<!-- 第二種button -->
<input type="button" value="提交" onclick="form1();" />
<script type="text/javascript">
function form1(){
var form1 = document.getElementById("form1");
form1.action = "hello.html";
form1.submit();
}
</script>
<!-- 第三種超連結 -->
<a href="hello.html?username=123456">提交</a>
</form>
輸入項常用的事件屬性:
onclick:滑鼠點選事件
onchange:改變內容(一般在select使用)
onfocus:得到焦點
onblur:失去焦點
<input type="text" id="id1" name="test" value="please input" onfocus="focus1();" onblur="blur1();" />
<script type="text/javascript">
function focus1(){
var input1 = document.getElementById("id1");
input1.value = "";
}
function blur1(){
var input1 = document.getElementById("id1");
input1.value = "please input";
}
</script>
XML的介紹
xml:eXtensible Markup Language(可擴充套件標記型語言)
與hmtl都是標記型語言,可以使用標籤操作,而xml的標籤可以自己定義,且可以使用中文標籤
用途:可以與html一樣用於顯示資料,還可以儲存資料(主要)
XML的應用
適用場景:
1.不同的系統之間傳輸資料
早期訊息的傳輸是直接使用字串,可讀性差且不利於維護
2.用來表示生活中有關係的資料
3.檔案配置(連線資料庫時修改資料庫的資訊只需要修改配置檔案)
XML的語法
1.xml的文件宣告(必須要有,用於表示寫的時xml的內容)
檔案的字尾名為.xml
<?xml version="1.0" encoding="gbk" ?>
屬性:version:版本號,encoding:xml的編碼,standalone:文件是否獨立或依賴其它檔案(yes/no)
注:必須寫在第一行第一列
2.定義元素(標籤)
標籤命名規則:
①可以是中文
②xml程式碼區分大小寫
③不能以數字,下劃線,xml,XML,Xml開頭
④不能包含空格或者冒號
<person></person>//有開始有結束
<aa/>//標籤沒有內容
<a><b></b></a>//標籤的巢狀
注:只能有一個根標籤,其它標籤都在根標籤中,同時xml中的空格和換行都會被當成內容來解析
3.定義屬性
屬性定義的要求:
①一個標籤上可以有多個屬性
②屬性名稱不能相同,且命名規則同標籤的定義規則
③屬性和屬性值之間同html一樣
4.註釋:寫法和html一樣(不能巢狀)
5.特殊字元:需要轉義,和html一樣
6.CDATA區
用途:可以解決多個字元都需要轉義的操作
語法:
<![CDATA[ 內容 ]]>
7.PI指令
用途:用來指揮軟體如何解析XML文件,可以在xml設定樣式
語法:
<?xml-stylesheet type="text/css" href="css的路徑"?>
注:只對英文標籤名稱起作用,而對中文標籤不起作用
XML的dtd約束
由於xml的標籤是自定義的,所以有可能回出現不屬於此標籤的子標籤的出現,所以需要約束xml中只能出現的元素
兩種約束的技術:dtd約束和schema約束
注:瀏覽器只會負責開啟xml檔案並校驗xml語法,不負責校驗約束.要校驗xml的約束,需要使用myeclipse工具.
用法:
①建立一個字尾名為.dtd的檔案
②xml中有多少個元素就在dtd檔案中寫幾個<!ELEMENT>
③判斷元素是簡單元素(沒有子元素)還是複雜元素(有子元素)
簡單元素:<!ELEMENT 元素名 (#PCDATA)>
複雜元素:<!ELEMENT 元素名稱 (子元素)>
④xml頁面引入dtd檔案(三種方式)
<!DOCTYPE 根元素名稱 SYSTEM "dtd檔案的路徑"><!-- 使用外部的dtd檔案 -->
<!DOCTYPE 根元素名稱 [
<!ELEMENT 元素名 (#PCDATA)>
<!ELEMENT 元素名稱 (子元素)>
]><!-- 使用內部的dtd檔案(寫在xml中) -->
<!DOCTYPE 根元素 PUBLIC "DTD名稱" "DTD文件的URL"><!-- 使用網路上的dtd檔案 -->
dtd檔案的使用規則(元素的定義):
簡單元素:<!ELEMENT 元素名 約束>
(#PCDATA):約束該元素是字串型別
EMPTY:元素為空(沒有內容)
ANY:任意內容
複雜元素:<!ELEMENT 元素名稱 (子元素名1,子元素2,…)>
子元素名+:該子元素可以出現一次或多次,預設只能出現一次
子元素名?:該子元素可以出現零次或者一次
子元素名*:該子元素可以出現零次或多次
注:
xml中的子元素的順序必須和dtd檔案中子元素名的順序一樣//(子元素名1,子元素2,…)
xml中的子元素只能出現dtd檔案中子元素的任意一個//(子元素名1|子元素2|…)
dtd定義元素的屬性:
語法:
<!ATTLIST 元素名稱
屬性1名稱 屬性型別 屬性的約束
屬性2名稱 屬性型別 屬性的約束
...
>
屬性型別:
①CDATA->字串
<!ATTLIST 元素名稱
屬性名稱 CDATA #REQUIRED
>
<!-- #REQUIRED表示這個型別必須要出現 -->
②列舉
<!ATTLIST 元素名稱
屬性名稱 (A|B|C) #REQUIRED
>
③ID->值只能是字元或者下劃線開頭
<!ATTLIST 元素名稱
屬性名稱 ID #REQUIRED
>
屬性的約束:
#REQUIRED->屬性必須存在
#IMPLIED->屬性可有可無
#FIXED->屬性是一個固定值
<!ATTLIST 元素名稱
屬性名稱 CDATA #FIXED "ABC"
>
<!-- 屬性值必須為ABC -->
直接值->不寫屬性則直接使用直接值,寫了屬性則用寫的屬性值
<!ATTLIST 元素名稱
屬性名稱 CDATA "DEF"
>
定義實體:
<!ENTITY 實體名稱 "實體的值"><!-- 定義在內部dtd,寫在外部dtd檔案有些瀏覽器得不到內容 -->
<name>&實體名;</name><!-- 實體的使用 -->
schema約束
1.該約束特點
schema符合xml的語法,xml語句,schema語法更加複雜
一個xml可以有多個schema,多個schema使用名稱空間來區分(類似於包名)
dtd裡面只有PCDATA型別(字串型別),而在schema裡面可以支援更多的資料型別(比如整數型別)
2.用法
①建立一個字尾名為.xsd的檔案(可以用myeclipse建立)
②xml中有多少個元素就中寫幾個<element>
③將簡單元素寫在複雜元素裡
④在被約束檔案裡面引入約束檔案
schema約束檔案:
<?xml version="1.0" encoding="UTF-8">
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www/itcast.cn/20151111"
elementFormDefault="qualified">
<!-- xmlns->當前xsd檔案是一個約束檔案
targetNamespace->被約束xml檔案通過此地址引入約束檔案
-->
<element name="person"><!-- 複雜元素person -->
<complexType>
<sequence>
<!-- sequence->子元素是有順序的
all->相同名稱的子元素只能出現一次
choice->只能出現約束檔案中子元素其中的一個
-->
<element name="name" type="string" maxOccurs="unbounded"></element>
<!-- 複雜元素中的子元素
maxOccurs="unbounded"->表示此子元素的出現次數無限制
-->
<element name="age" type="int"></element>
</sequence>
<attribute name="id1" type="int" use="required"></attribute>
<!--
name->屬性名稱
type->屬性型別
use->屬性是否必須出現,requried
-->
</complexType>
</element>
</shema>
被約束的xml檔案:
<?xml version="1.0" encoding="UTF-8">
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www/itcast.cn/20151111"
xmlns:dept="http://www.exaple.org/department"
xsi:schemaLocation="http://www/itcast.cn/20151111 1.xsd http://www.example.org/department 2.xsd">
<!-- xmlns:xsi->當前xml檔案是一個被約束檔案
xmlns->約束文件裡面的targetNamespace
xmlns:dept->另一個約束檔案
xsi->名稱空間,targetNamespace+空格+約束文件的路徑
-->
<name>zhangsan</name>
<dept:name>xxx</name><!-- dept約束檔案中的name -->
<age>20</age>
</person>