xml基礎筆記

XML Java 學習編程 2017-05-23

<!-- 註釋 -->

一、文檔聲明:必須在文件開頭

1、<?xml version="1.0" encoding="gbk">

屬性:

(1)version: 版本號

(2)encoding: 編碼

(3)standalone: 是否需要依賴其他文件

2、<![CDATA[ 內容]]>:內容中出現的特殊符號不需要轉義

二、xml的約束

1、dtd約束 和 schema約束

2、dtd約束:

(1)<!ELEMENT 元素名 約束>

約束:

<1>如果有子元素,就寫子元素列表

(元素名1[+/?/*],元素名2...)

+: 一次或多次

?: 零次或一次

*: 任意次

','換成'|': 在列出元素中選擇一個

',': 表示元素必須按指定的順序出現

<2>沒有子元素,寫元素類型

(#PCDATA): 字符串類型

EMPTY:元素為空

ANY: 任意

(2)dtd定義元素屬性:

<!ATTLIST 元素名 屬性名 屬性類型 屬性約束>

<1>屬性類型:

CDATA: 普通文本字符串

ENUMERATED: 枚舉(枚舉值1|枚舉值2...)

ID: 取值不能重複

<2>屬性約束:

#REQUIRED: 必須出現

#IMPLIED: 可有可無

#FIXED: 固定值:#FIXED "固定值"

直接值:默認值

(3)定義運用實體:(寫在內部dtd裡,否則有些瀏覽器取不到值)

<!ENTITY 實體名 "實體內容">

在xml中引用: &實體名;

(4)xml文件中引入:

使用本地dtd文件: <!DOCTYPE 根元素名 SYSTEM "dtd文件路徑">

使用內部dtd: <!DOCTYPE 根元素名 [ dtd代碼 ]>

使用網絡的dtd: <!DOCTYPE 根元素名 PUBLIC "dtd名稱" "dtd文檔的url">

3、schema約束:

(1)特點:

符合xml的語法

一個xml中可以有多個schema,多個schema使用名稱空間區分(類似java的包)

schema中支持更多的數據類型

(2)<schema></schema>:最外層標籤

標籤寫法為:<schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.example.org/1"

xmlns:tns="http://www.example.org/1"

elementFormDefault="qualified">

屬性:

xmlns: 默認使用的名稱空間

targetNamespace: 聲明該文檔中的元素屬於哪個命名空間

xmlns:tns: 該文檔使用的元素和數據類型來自哪個命名空間,同時來自這個命名空間的元素和數據類型應該使用前綴xsd:

elementFormDefault="qualified": 指出XML文檔使用在此schema中聲明過的元素必須被命名空間限定

(3)<element></element>: 定義元素

<1>若有子元素:

<element><complexType><元素指示器>子element元素</元素指示器></complexType></element>

元素指示器:

sequence: 表示元素是有順序的

all: 表示只能出現一次

Choice: 只能出現其中一個

設置屬性:(放在</complexType>前)

<attribute></attribute>

屬性:

name: 名稱

type: 類型

use: 是否必須有

<2>若無子元素:

<element></element>

屬性:

name: 數據名稱

type: 數據類型

maxOccurs: 表示出現次數,="unbounded"時無限制

<any></any>: 可以出現任意元素

4、xml文件中引入:

<根元素名 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://www.example.org/1"

xsi:schemaLocation="http://www.example.org/1 1.xsd">

屬性:

xmlns: 聲明默認約束來自哪個名稱空間

xsi:schemaLocation: 引入的名稱空間和哪個xsd文件對應,第一個為名稱空間, 第二個為xsd文件路徑.

相關推薦

推薦中...