日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

JavaWeb学习笔记(XML语言)

發布時間:2023/12/14 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb学习笔记(XML语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

知識點總結于崔希凡+王澤(廣陵散)的JavaWeb視頻教程,侵權請聯系刪除。

XML

  • XML
    • 簡介
    • XML的應用
      • XML常見應用
    • XML的語法規則
      • 文檔聲明
      • 元素(標簽)定義
      • 屬性定義
      • 注釋
      • 特殊字符
        • CDATA區
      • 處理指令
      • 小結
    • XML約束
      • 概述
      • DTD約束
        • 使用DTD定義元素
        • 使用DTD定義屬性
        • 定義實體
      • Schema約束
        • XMLSchema文檔基本結構
        • XMLSchema簡易元素和復雜元素
        • XMLSchema復雜元素指示器
          • 約束屬性
        • 對XML Schema的引用
          • 名稱空間的概念
          • 使用名稱空間引入Schema
        • 示例

XML

簡介

XML(eXtensible Markup Language): 指可擴展標記語言

  • 標記型語言:html是標記型語言,XML也是使用標簽來操作的
  • 可擴展:html里面的標簽是固定,每個標簽都有特定的含義例如:<h1> <br/> <hr/>,但是XML標簽可以自己定義,可以寫中文的標簽 例如:<person></person>、<貓></貓>
    XML標簽沒有被預定義,需要用戶自行定義標簽
  • XML的用途:XML 被設計用來傳輸和存儲數據(XML也可顯示數據,但不是主要功能)。
  • XML技術是W3C組織(World Wide Web Consortium萬維網聯盟)發布的,目前遵循的是W3C組織于2000年發布的XML1.0規范。
    xml有兩個版本:1.0 1.1
    使用都是1.0版本,(1.1版本不能向下兼容)
  • XML被廣泛認為是繼Java之后在Internet上最激動人心的新技術。

XML的應用

  • XML語言出現的根本目的在于描述向上圖那種有關系的數據。
  • XML是一種通用的數據交換格式
  • 在XML語言中,它允許用戶自定義標簽。一個標簽用于描述一段數據;一個標簽可分為開始標簽和結束標簽,在起始標簽之間,又可以使用其它標簽描述其它數據,以此來實現數據關系的描述。
  • XML中的數據必須通過軟件程序來解析執行或顯示,如IE;這樣的解析程序稱之為Parser(解析器)。

XML常見應用

  • 用于描述qq直接傳輸數據,使用xm格式進行描述,具有可讀性和可維護性
  • XML技術除用于保存有關系的數據之外,它還經常用作軟件配置文件,以描述程序模塊之間的關系。(如Struts、Spring和Hibernate都是基于XML作為配置文件的)
  • 在一個軟件系統中,通過XML配置文件可以提高系統的靈活性。即程序的行為是通過XML文件來配置的,而不是硬編碼。

XML的語法規則

文檔聲明

  • 在編寫XML文檔時,需要先使用文檔聲明來聲明XML文檔,且必須出現在文檔的第一行。(寫了文檔聲明之后,表示寫xml文件的內容)
    最簡單的語法:<?xml version=“1.0”?>
  • encoding屬性說明文檔所使用的字符編碼。保存在磁盤上的文件編碼要與聲明的編碼一致,否則會出現亂碼
    因為碼表中存儲的相同字符的位置不一樣,如果按照GBK碼表存儲字符,假定“你好”位置分別在1和2,而通過UTF-8打開,因為UTF-8碼表中1 2位置上的字符是其它字符,所以會出現亂碼。
    字符編碼強行將每一個字符對應一個十進制數字,再將十進制數字轉換成計算機理解的二進制,而計算機讀到這些1和0之后就會顯示出對應的文字或符號。
    如:<?xml version=“1.0” encoding=“GB2312”?>
  • standalone屬性說明文檔是否獨立,即是否依賴其他文檔。
    如:<?xml version=“1.0” standalone=“yes”?>

元素(標簽)定義

  • XML元素指XML文件中出現的標簽。一個標簽分為起始和結束標簽(不能省略)。一個標簽有如下幾種書寫形式:
    1.包含標簽主體:<mytag>some content</mytag>
    2.不含標簽主體:<mytag/>

  • 一個標簽中可以嵌套若干子標簽,但所有標簽必須合理的嵌套,不允許有交叉嵌套。
    錯誤示例:<mytag1><mytag2></mytag1></mytag2>

  • 一個XML文檔必須有且僅有一個根標簽,其他標簽都是這個根標簽的子標簽或孫標簽。

  • 對于XML標簽中出現的所有空格和換行,XML解析程序都會當作標簽內容進行處理。例如下面兩段內容的意義是不一樣的:

    • <網址>www.itcast.cn</網址>
    • <網址>
      ????www.itcast.cn
      </網址>

    由于在XML中,空格和換行都作為原始內容被處理,所以,在編寫XML文件時,使用換行和縮進等方式來讓原文件中的內容清晰可讀的“良好”書寫習慣可能要被迫改變。

  • 一個XML元素可以包含字母、數字以及其它一些可見字符,但必須遵守下面的一些規范:

    • 區分大小寫,例如,<P>和<p>是兩個不同的標記
    • 不能以數字或"_" (下劃線)開頭
    • 不能以xml(或XML、或Xml 等)開頭
    • 不能包含空格
    • 名稱中間不能包含冒號(:)

屬性定義

  • 一個元素可以有多個屬性,每個屬性都有它自己的名稱和取值,例如:<mytag name=“value” …/>

  • 屬性值一定要用引號(單引號或雙引號)引起來

  • 屬性名稱的命名規范與元素的命名規范相同

  • 元素中的屬性是不允許重復

  • 在XML技術中,標簽屬性所代表的信息也可以被改成用子元素的形式來描述,例如:

    <mytag><name><firstName/><lastName/></name></mytag>

注釋

  • XML中的注釋語法為:<!–這是注釋–>
  • 注意:
    1.XML聲明之前不能有注釋(即第一行)
    2.注釋不能嵌套,例如:

特殊字符

  • 在xml文檔中有些字符是特殊的,不能使用它們作為文本數據。例如:不能使用“<”或“>”等字符作為文本數據,所以需要使用轉義字符來表示。
    例如在xml中直接輸入 a<b ,結果不能正常顯示,因為把<當做了標簽
    如果就想要顯示,需要對特殊字符 < 進行轉義:a &lt; b

CDATA區

當大量的轉義字符出現在xml文檔中時,會使xml文檔的可讀性大幅度降低。這時如果使用CDATA段就會好一些。
在CDATA段中出現的“<”、“>”、“””、“’”、“&”,都無需使用轉義字符。這可以提高xml文檔的可讀性。

  • 書寫格式(紅色部分):

<a><![CDATA[ <a> ]]></a>

處理指令

處理指令,簡稱PI(Processing instruction)。處理指令用來指揮解析器如何解析XML文檔內容。

  • 例如,在XML文檔中可以使用xml-stylesheet指令,通知XML解析器,應用css文件顯示xml文檔內容:<?xml-stylesheet type="text/css" href="a.css"?>
    處理指令以“<?”開頭,以“?>”結束,這一點與xml文檔聲明相同。

CSS:
gj1 {font-size: 200px; color: red;}
gj2 {font-size: 100px; color: green;}
gj3 {font-size: 10px;}
gj4 {font-size: 50px; color: blue;}

XML:

<?xml version="1.0" encoding="gbk"?> <?xml-stylesheet type="text/css" href="a.css" ?>

<gjm>
?<gj1>中國</gj1>
<gj2>美國</gj2>
<gj3>日本</gj3>
<gj4>英國</gj4>
</gjm>

小結

  • 所有 XML 元素都須有關閉標簽
  • XML 標簽對大小寫敏感
  • XML 必須正確地嵌套順序
  • XML 文檔必須有根元素(只有一個)
  • XML 的屬性值須加引號
  • 特殊字符必須轉義 — CDATA
  • XML 中的空格、回車換行會解析時被保留

XML約束

概述

在XML技術里,可以編寫一個文檔來約束一個XML文檔的書寫規范(與xml語法無關),這稱之為XML約束。

  • 為什么需要XML約束?
    因為xml文檔是可以自定義元素的,這會讓使用xml文檔的應用程序無法知道xml文檔的真實結構。通常應用程序都會要求xml文件的結構是固定的,以滿足自己的需求,這就說明,不同的應用程序要求自己的xml文檔必須符合一定的要求。
  • 兩個概念:
    格式良好的XML:遵循XML語法的XML
    有效的XML:遵循約束文檔的XML

    總之:約束文檔定義了在XML中允許出現的元素名稱、屬性及元素出現的順序等等
  • 常用的約束技術:
    XML DTD
    XML Schema

DTD約束

DTD(Document Type Definition),全稱為文檔類型定義。dtd是平面式文檔,dtd文件不是xml文檔,通常擴展名為“.dtd”。它是最早的xml約束。

什么是DTD約束?
 DTD(Document Type Definition),文檔類型定義,用來約束XML文檔。例如要求xml文檔的根元素必須是,在元素下可以包含0~n個元素,每個元素必須有一個number屬性,而且還要有三個子元素,分別<name>、<age>、<sex>,這三個子元素的內容必須為文本內容,而不能是子元素。

創建步驟:

  • 看xml中有多少個元素 ,有幾個元素,在dtd文件中寫幾個 <!ELEMENT>
  • 判斷元素是簡單元素還是復雜元素
    復雜元素:有子元素的元素
    <!ELEMENT 元素名稱 (子元素)>
    簡單元素:沒有子元素
    <!ELEMENT 元素名稱 (#PCDATA)>
    注意:元素名稱和括號之間存在空格,不然格式錯誤
  • 需要在xml文件中引入dtd文件
  • 注意:如果我們打開xml文件是用瀏覽器打開的,由于瀏覽器只負責校驗xml的語法,不負責校驗約束,所以不會起到約束作用。

    如果想要校驗xml的約束,需要使用工具(myeclipse工具、Idea)。

    DTD的三種引入方式:
    DTD約束即可以作為一個單獨的文件編寫,也可以在XML文件內編寫。

  • 使用外部DTD
    <!DOCTYPE 根元素名稱 SYSTEM “dtd路徑”>
  • 使用內部DTD
    <!DOCTYPE person [
    <!ELEMENT person (name,age)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    ]>
  • 使用公共DTD(網絡上的dtd文件)
    <!DOCTYPE 根元素 PUBLIC “DTD名稱” “DTD文檔的URL”>
    框架 struts2 使用配置文件就是外部的dtd文件
    示例:<!DOCTYPE struts PUBLIC “-//Apache Software Foundation//DTD Struts Configuration 2.0//EN” “http://struts.apache.org/dtds/struts-2.0.dtd”>
  • 使用DTD定義元素

    • 在DTD文檔中使用ELEMENT關鍵字來聲明一個XML元素。

    • 語法:<!ELEMENT 元素名稱 使用規則>
      規則:
      (#PCDATA):指示元素的主體內容只能是普通的文本.(Parsed Character Data)
      EMPTY:用于指示元素的主體為空。比如<br/>
      ANY:用于指示元素的主體內容為任意類型(可以為空)。
      (子元素):指示元素中包含的子元素

    • 定義子元素及描述它們的關系:

      • 如果子元素用逗號分開,說明必須按照聲明順序去編寫XML文檔。
        如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL) 標簽要從TITLE開始到EMAIL結束的順序書寫
      • 如果子元素用“|”分開,說明任選其一。
        如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)(只能在三個標簽中選擇一個)
      • 用+、*、?來表示元素出現的次數
        +:表示至少出現一次,一次或多次
        *:表示可有可無,零次、一次或多次
        ?:表示可以有也可以無,有的話只能有一次。零次或一次

    圖例:

    使用DTD定義屬性

    • 屬性的定義格式:
    <!ATTLIST 元素名稱屬性名稱 屬性類型 屬性的約束>
    • 示例:
    <!ATTLIST 商品類別 CDATA #REQUIRED 必須的顏色 CDATA #IMPLIED 可選的 ><!-- 對應的XML為: --> <商品 類別=“服裝” 顏色=“黃色”/>
    • 屬性值類型:
      CDATA:表示屬性的取值為普通的文本字符串
      ENUMERATED (DTD沒有此關鍵字):表示枚舉,只能從枚舉列表中任選其一,如(雞肉|牛肉|豬肉|魚肉)
      ID:表示屬性的取值不能重復,屬性的值只能由字母,下劃線開始,不能出現空白字符

      如果把student元素的number屬性設定為ID類型,那么每個student元素的number屬性值必須是唯一的,并且ID類型的屬性值不能以數字開頭
    • 屬性約束設置說明:
      #REQUIRED:表示該屬性必須出現
      #IMPLIED:表示該屬性可有可無
      #FIXED:表示屬性的取值為一個固定值。語法:#FIXED “固定值”
      直接值(直接輸入一個值):表示屬性的取值為該默認值

    示例:

    <!ATTLIST 頁面作者 姓名 CDATA #IMPLIED 年齡 CDATA #IMPLIED 聯系信息 CDATA #REQUIRED 網站職務 CDATA #FIXED "頁面作者" 個人愛好 CDATA "上網">

    根元素為 頁面作者 ,姓名元素和年齡元素的文本內容可有可無,聯系信息元素的文本內容必須出現。

    定義實體

    實體用于為一段內容創建一個別名,以后在XML文檔中就可以使用別名引用這段內容了。相當于在Java中的用final定義一個常量值。

    • 語法:<!ENTITY 實體名稱 “實體內容”>
    • 概念:在DTD中定義,在XML中使用
    • 引用方式(注意是在XML中使用):&實體名稱;

    Schema約束

    XML Schema 也是一種用于定義和描述 XML 文檔結構與內容的模式語言,其出現是為了克服 DTD 的局限性

    概念:

    • XML Schema 文件自身就是一個XML文件,但它的擴展名通常為.xsd
    • 和XML文件一樣,一個XML Schema文檔也必須有一個根結點,但這個根結點的名稱為Schema
    • 應用schema約束,開發xml過程

    • 編寫了一個XML Schema約束文檔后,通常需要把這個文件中聲明的元素綁定到一個URI地址上,這個URI地址叫namespace名稱空間,以后XML文件就可以通過這個URI(即名稱空間)引用綁定指定名稱空間的元素

    XML Schema的特點:

    • XML Schema符合XML語法結構。
    • DOM、SAX等XML API很容易解析出XML Schema文檔中的內容。
    • XML Schema對名稱空間支持得非常好。
    • XML Schema比XML DTD支持更多的數據類型,并支持用戶自定義新的數據類型。
    • XML Schema定義約束的能力非常強大,可以對XML實例文檔作出細致的語義限制。
    • XML Schema不能像DTD一樣定義實體,比DTD更復雜,但Xml Schema現在已是w3c組織的標準,它正逐步取代DTD。

    Schema和DTD區別:
    XML從SGML中繼承了DTD,并用它來定義內容的模型,驗證和組織元素。同時,它也有很多局限:

    • DTD不遵守XML語法;
    • DTD不可擴展;
    • DTD不支持命名空間的應用;
    • DTD沒有提供強大的數據類型支持,只能表示很簡單的數據類型。

    Schema完全克服了這些弱點,使得基于Web的應用系統交換XML數據更為容易。下面是它所展現的一些新特性:

    • Schema完全基于XML語法,不需要再學習特殊的語法;
    • Schema能用處理XML文檔的工具處理,而不需要特殊的工具;
    • Schema大大擴充了數據類型,支持booleans、numbers、dates and times、URIs、integers、decimal numbers和real numbers等;
    • Schema支持原型,也就是元素的繼承。如:我們定義了一個“聯系人”數據類型,然后可以根據它產生“朋友聯系人”和“客戶聯系”兩種數據類型;
    • Schema支持屬性組。我們一般聲明一些公共屬性,然后可以應用于所有的元素,屬性組允許把元素、屬性關系放于外部定義、組合;
    • 開放性。原來的DTD只能有一個DTD應用于一個XML文檔,現在可以有多個Schema運用于一個XML文檔

    XMLSchema文檔基本結構

    • 在W3C XML schema規范中規定:所有的Schema文檔都使用 <schema>作為其根元素
    • <schema>元素可以包含一些屬性。一個XML schema聲明看起來經常以如下的形式出現:
      <schema xmlns=“http://www.w3.org/2001/XMLSchema”
      targetNamespace=“http://www.itcast.cn/20140213”
      elementFormDefault=“qualified”>

      xmlns="http://www.w3.org/2001/XMLSchema"代表當前xml文件是一個約束文件;
      targetNamespace="http://www.itcast.cn/20140213"代表如果要使用schema約束文件,直接通過這個地址引入約束文件;
      elementFormDefault="qualified"代表在xml中,所有引用xsd的全局的元素都必須加上命名空間的前綴
    <?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.itcast.cn/20140213" elementFormDefault="qualified">... </schema>

    XMLSchema簡易元素和復雜元素

    • 簡易元素:指那些僅包含文本的元素。它不會包含任何其他的元素或屬性。
      <element name=“xxx” type=“string"/>
    • 復雜元素:復雜類型元素是包含子元素或者屬性的元素
      使用<complexType>:表示復雜類型
    • <sequence>:表示有順序

    示例:XML文件有一個根元素person,根元素中有一個元素person,其中包含兩個子類元素to和from

    <?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/1111" elementFormDefault="qualified"><element name="person"><complexType><sequence><element name="man"><complexType><sequence><element name="name" type="string"></element><element name="age" type="string"></element></sequence></complexType></element></sequence></complexType></element> </schema>

    XMLSchema復雜元素指示器

    All:表示只能出現一次
    Choice: 只能出現其中的一個
    Sequence:元素按照順序出現
    maxOccurs=“unbounded” 表示出現次數沒限制
    定義屬性(必須是復雜元素):<attribute name=“p1” type=“string” use=“required”></attribute>
    <any></any>:表示任意元素

    約束屬性
    • 寫在復雜元素里面
    • 寫在</complexType>之前
      例如:
      <attribute name=“id1” type=“int” use=“required”>
      代表該元素名稱為id1,屬性類型為int,且必須出現

    對XML Schema的引用

    • Schema和被約束的xml都是xml文檔,如何區分哪個是被約束的文檔?
      使用名稱空間區分被約束文檔(使用w3c名稱空間)
      xmlns=“http://www.w3.org/2001/XMLSchema-instance” 代表當前的文檔是一個實例文檔(被約束的文檔)
    • 引用自定義的schema,使用自定義的名稱空間
      由于一個標簽上不能出現兩個同名的屬性,所以需要給名稱空間起一個別名xsi。xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
      引用本地xsd文件存放位置,使用schemaLocation:代表的是Schema文檔存放的路徑
    <?xml version="1.0" encoding="utf-8"?> <note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.itcast.cn/20140213" xsi:schemaLocation="http://www.itcast.cn/20140213 node.xsd"><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body> </note>
    名稱空間的概念
    • 在XML Schema中,每個約束模式文檔都可以被賦以一個唯一的名稱空間,名稱空間用一個唯一的URI(Uniform Resource Identifier,統一資源標識符)表示。 在Xml文件中書寫標簽時,可以通過名稱空間聲明(xmlns),來聲明當前編寫的標簽來自哪個Schema約束文檔。如:
      <itcast:書架 xmlns:itcast=“http://www.itcast.cn”>
      <itcast:書>……</itcast:書>
      </itcast:書架>
      此處使用itcast來指向聲明的名稱,以便于后面對名稱空間的引用。
    • 注意:名稱空間的名字語法容易讓人混淆,盡管以 http:// 開始,那個 URL 并不指向一個包含模式定義的文件。事實上,這個 URL:http://www.itcast.cn根本沒有指向任何文件,只是一個分配的名字。
    使用名稱空間引入Schema
    • 為了在一個XML文檔中聲明它所遵循的Schema文件的具體位置,通常需要在Xml文檔中的根結點中使用schemaLocation屬性來指定,例如:
      <itcast:書架 xmlns:itcast=“http://www.itcast.cn”
      xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
      xsi:schemaLocation=“http://www.itcast.cn book.xsd">
    • schemaLocation此屬性有兩個值。第一個值是需要使用的命名空間。第二個值是供命名空間使用的 XML schema 的位置,兩者之間用空格分隔。
    • 注意,在使用schemaLocation屬性時,也需要指定該屬性來自哪里。

    示例:
    company.xml

    company.xsd

    department.xsd

    示例

    為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"><xsd:element name="students" type="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>張三</name><age>23</age><sex></sex></student><student number="ID_1002"><name>李四</name><age>32</age><sex></sex></student><student number="ID_1003"><name>王五</name><age>50</age><sex></sex></student> </students>

    總結

    以上是生活随笔為你收集整理的JavaWeb学习笔记(XML语言)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。