1. 程式人生 > >[XML]學習筆記(三)——DTD屬性的宣告及型別

[XML]學習筆記(三)——DTD屬性的宣告及型別

一、屬性的宣告:
a)        任何標記的屬性都必須在DTD文件中進行宣告,都要通過關鍵字

<!ATTLIST elem_nameattr_name attr_type default_value>


定義。
b)        所有標記的屬性,即便是同名屬性,都要在各個標記中宣告。
如publisher中有address屬性,person中也有address屬性,則需要分別在兩個標記中進行宣告。
c)        可以多次為一個標記宣告不同的屬性。
如book有language和publisher兩個屬性,可以宣告為
<!ATTLIST book language CDATA “english”>
<!ATTLIST book publisher CDATA “tsinghua”>


也可以同時依次為一個標記宣告多個屬性。
如:
<!ATTLIST book language CDATA “english” publisher CDATA “tsinghua“>

(不提倡使用)
d)        attr_type的四種類型:
                        i.             預設屬性值,不指定;
                      ii.             #REQUIRED——屬性值必須指定;
                     iii.             #IMPLIED——屬性值可選用或不用;
                     iv.             #FIXED——屬性值可以沒有,但如果有則必須和指定值保持一致。
e)        e.g.
test328.dtd
<?xmlversion="1.0" encoding="UTF-8"?>
<!ELEMENT books (book*)>
<!ELEMENT book(name|author|price)*>
<!ATTLIST book languageCDATA #FIXED "english">
<!ATTLIST book publisherCDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author(#PCDATA)>
<!ELEMENT price(#PCDATA)>


test328.xml
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM"test328.dtd">
<books>
  <book language="english" publisher="ecnu">
      <name>xml programming</name>
      <author>Jason</author>
      <price>$100</price>
  </book>
</books>


二、 屬性的內容型別
a)        CDATA型:該型別的屬性值不能含有“<”和“””,但實體可以出現在該字串中;
b)        Enumerated型:必須從列舉過的資料型別中選取,如(true|false);
c)        ID型:要求文件中所有標記ID型別的屬性值一定不能相同;
d)        ENTITY型:用於標識外部不可解析的實體,如二進位制檔案;
e.g.(會報錯?)
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book)*>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book pic ENTITY#REQUIRED>
<!ENTITY pic1 SYSTEM"haha.jpg">
<!ENTITY pic2 SYSTEM"monkey.jpg">
]>
<books>
  <book pic="&pic1;">haha</book>
  <book pic="&pic2;">monkey</book>
</books>


e)        ENTITIES型:與ENTITY類似,但其指定的是一個實體序列,如多張圖片,多個音訊等。
e.g.(會報錯?)
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book)*>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book pic ENTITIES #REQUIRED>
<!ENTITY pic1 SYSTEM "haha.jpg">
<!ENTITY pic2 SYSTEM "monkey.png">
]>
<books>
  <book pic="&pic1; &pic2;">haha</book>
</books>


f)         NOTATION型:對於不可解析的實體,為了將其展現出來或進行應用,通過該關鍵字告訴用什麼樣的軟體進行支援。
如:dtd中宣告
<!NOTATION JPG SYSYEM “c:/mspaint.exe”>
<books>
  <book pic="&pic1; &pic2;" display=”JPG”>haha</book>
</books>

g)        IDREF型:用於表示XML文件中標記之間關係的一種型別,其值必須是文件中被定義好的某一標記的ID型別的屬性值。
如:
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book)*>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book isbn ID#REQUIRED>
<!ATTLIST book lastversionIDREF #IMPLIED>
]>
<books>
  <book isbn="P301">haha</book>
  <book isbn="P103" lastversion="P301">HA</book>
</books>


h)        IDREFS型:類似於IDREF,但可以引用多個ID,多個ID之間用空格隔開。
i)          NMTOKEN型:限制作為其值的屬性型別,規定了一種合法的命名機制,必須由英文字母、數字、“.”、“_”和“-”組成,不能包括空格。
e.g.
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book)*>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book isbn ID#REQUIRED>
<!ATTLIST book referencesIDREFS #IMPLIED>
<!ATTLIST book publisherNMTOKEN #IMPLIED>
]>
<books>
  <book isbn="P301">haha</book>
  <book isbn="P302">HA</book>
  <book isbn="P103" references="P301 P302" publisher="Tsinghua_University">A</book>
</books>


j)          NMTOKENS型:能夠給一個標記賦予幾個滿足NMTOKEN型的字串,不同的字串都在一個引號中,彼此用空格隔開。

相關推薦

[XML]學習筆記——DTD屬性宣告型別

一、屬性的宣告: a)        任何標記的屬性都必須在DTD文件中進行宣告,都要通過關鍵字 <!ATTLIST elem_nameattr_name attr_type default_value> 定義。 b)        所有標記的屬性,即便是同名屬

[XML]學習筆記——DTD宣告與實體

一、文件型別宣告: a)內部DTD的宣告: DTD定義語句與XML文件在同一文件,通常放在頭部。格式如下: <!DOCTYPE root_tag[ <!ELEMENT xxx (…)> … ]> 注意在DOCTYPE後面跟的是根標記的名字。 b)外部

cocos creator 學習筆記 ——節點屬性操作篇

我們在上面學瞭如何訪問內部節點屬性和外部節點屬性 ——我們將在這裡學習可以對這些節點和屬性做哪些常用操作 1、啟用,關閉節點——active this.node.active = true;    //false。     啟用——在父節點同樣啟用的情況下,所有啟用的

Javascript高階程式設計學習筆記—— JS中的資料型別1

 前一段時間由於事情比較多,所以筆記耽擱了一段時間,從這一篇開始我會盡快寫完這個系列。 文章中有什麼不足之處,還望各位大佬指出。 JS中的資料型別 上一篇中我寫了有關JS引入的Script標籤相關的東西。 那麼這一篇,我們可以正式進入JS的世界了,emmm 前面的東西應該比較基礎,大佬們不

Numpy學習筆記:建立矩陣運算

矩陣的變換 #矩陣的形狀變換 改變矩陣的形狀 print(np.arange(15)) a=np.arange(15).reshape(3,5) a a.shape a.ndim#矩陣的維度 a.dtype.name a.size 運算結果: [ 0 1

RT-Thread 學習筆記——讀取MCU IDFLASH大小

突然想讀一讀MCU的識別ID號和FLASH大小,那就寫一寫唄! 型號:stm32f103zet6 根據datasheet知道相應的內容儲存地址:  然後就貼程式碼: void rt_show_

Spring 學習筆記IOC之XML方式配置 第二回Bean節點屬性的配置

<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/X

C#可擴展編程之MEF學習筆記:導出類的方法和屬性

學習 說了 如何 mod ati dem ont num imp 前面說完了導入和導出的幾種方法,如果大家細心的話會註意到前面我們導出的都是類,那麽方法和屬性能不能導出呢???答案是肯定的,下面就來說下MEF是如何導出方法和屬性的。   還是前面的代碼,第二篇中已經提供了下

Spring 學習筆記IOC之XML方式配置 第一回 javaBean的配置與獲取

IOC的兩種方式: XML方式 註解方式 XML方式 需要的jar包   spring-beans-4.3.3.RELEASE.jar spring-context-4.3.3.RELEASE.jar spring-context-support

MyBatis學習筆記mybatis-config.xml都有哪些配置之typeAliases與plugins

類型別名(typeAlicases) 在mybatis-config.xml配置檔案中加入類描述 <typeAliases> <typeAlias type="org.mybatis.example.User" alias="User" />

Andorid中使用Jsoup解析庫解析XML、HTML、Dom節點---第三方庫學習筆記

XML介紹: XML簡介: XML,可擴充套件標記語言,標準通用標記語言的子集。 一種用於標記電子檔案使其具有結構性的標記語言。 它可以用來標記資料、定義資料型別 是一種允許使用者對自己的標記語言進行定義的源語言。 非常適合全球資訊網傳輸 提供統一方法描述

three.js學習筆記-camera.up屬性探索

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <

JAVA學習筆記

byte repl efi ber 時間 clas 區分大小寫 增強for size @SuppressWarnings("resource")是用來壓制資源泄露警告的。比如使用io類,最後沒有關閉。Set集合特點:1)無序,不隨機2)元素唯一3)沒下標註意:Collect

thinkphp5.0學習筆記獲取信息,變量,綁定參數

名稱 自動識別 參數順序 query images 報錯 oca nds arc 1.構造函數: 控制器類必須繼承了\think\Controller類,才能使用: 方法_initialize 代碼: <?php namespace app\lian\control

最優化學習筆記最速下降法

tex track enter water pos 最優 content 分享 clas 最優化學習筆記(三)最速下降法

python學習筆記

list 內存 寫入 odin move 列表 付出 open ada 文件的操作一般分三步: 1、打開文件,獲取文件的指針(句柄) 2、通過指針(句柄)操作文件 3、關閉文件 現在有以下文件: 我們為愛還在學 學溝通的語言

Redis學習筆記常用命令整理

mes ember nbsp end 插入 學習筆記 頻道 hash value Redis 常用命令 1.DEL key 刪除key2.EXISTS key 檢查key是否存在3.KEYS * 查看所有的key4.EXPIRE key seconds 設置key的過期時

Django 學習筆記模板導入

文件 文件中 訪問 from lang sts class rom 網頁 本章內容是將一個html網頁放進模板中,並運行服務器將其展現出來。 平臺:windows平臺下Liunx子系統 目前的目錄: hello ├── manage.py ├── hello │ ├─

Git學習筆記遠程庫GitHub協同開發,fork和忽略特殊文件

tex 情況 learn 多人 版本管理 獲得 logs 秘鑰 多個 遠程庫   遠程庫,通俗的講就是不再本地的git倉庫!他的工作方式和我們本地的一樣,但是要使用他就需要先建立連接!   遠程庫有兩種,一個是自己搭建的git服務器;另一種就是使用GitHub,這個網站就是

jQuery學習筆記

對象 idt 命名空間 goto div hid 右鍵 func 切換 jQuery中的事件和動畫 jquery中的事件 加載DOM 兩者等價但有細微區別 $(document).ready(function(){//編寫代碼}) 在DOM完全就緒時就可以被調用。