XML(Extensible Markup Language)可擴展標籤語言筆記_醫療費用採XML格式申報生活實例





XML簡介:
可擴展標記語言與HTML最大差異就在於標籤是可以被擴充的
而HTML注重於網頁外觀,XML則是注重於資料的結構用在交換剖析。
是由一連串dataset和tag所構成的。


XML比較常用於資料交換,於開發過程中
對於不同作業系統之間的資料傳送,通常都會使用XML技術
(比方Web Service....)

捨麼是XML
Extensible Markup Language
主要是SGML子集合,目標在於允許普通SGML在Web上以目前HTML方式來進行資料處裡之應用,因而使其更加利於設計。

並且可以在SGML與HTML之間相互操作(W3C XML工作團隊對其定義)

GML(Generalized Markup Language)
1969年由IBM提出,最早是由William W. Tunnicliffe 於1960年代提出
結構化標籤語言的概念
在當時所遇到的問題就是對於不同種類文件(比如:信、文章、書籍、.....等等)
則需要不同的標籤語言
在1973年由Charles Goldfarb, Edward Mosher, Paymond Lorie等IBM的人員
所提出。而提出了DTD(Ducument Type Definition)的觀念
用metalanguage 標籤來去定義文件種類區分



SGML(Standard Generalized Markup Language)
1986年由ISO制定,為第一套有標準國際認可及標準標籤的標籤語言
用途在於希望把電子文件中的文字和文件格式標準化。



歷史發展圖(如下):



優點:
1.助於伺服器之間傳送結構化資料
2.屬於文字格式且允許開發者描述結構化數據並用於各種應用程式之間溝通、交換
3.允許自定義格式,標註、交換和parser資料庫可理解的數據


生活案例:
新版健保資訊網 暨XML醫療費用申報作業
就有提及到轉為XML格式的好處
在過去使用的是TXT文字檔
就有因為檔案內容格式並沒有統一國際規範
導致後續擴充、管理和保存成本較高


以醫療費用那時的生活實例來看










XML格式中
由醫療專門的系統人員定義的四種標籤

就有明確的標記出不同的申報類型




常使用的XML開發工具:
文字編輯器: Notepad++ , editplus , subline
IDE:webstorm , eclipse , Altova XMLSpy

如下使用Notepad++來示範一個簡單XML程式

一開始標頭處我們要先定義好XML版本與編碼
<? .... ?>
我們先打上一組小於問號  、 問號大於
接著再去寫上1.0版本與編碼設置為UTF槓8



我們接著來找尋一個數據題材
以博客來書為例


就有分成書名、出版社、作者、詳細資料...等等屬性

XML  書店的DEMO


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?xml version = "1.0" encoding="utf-8"?>
<books>
 <book>
  <name>高山上的小郵局</name>
  <Author>安荷樂絲.杜良特</Author>
  <publish>悅知文化</publish>
  <infos>
   <info>
    <infoname>作者介紹</infoname>
    <context>
    生於西班牙巴賽隆納,從事新聞和教育相關工作。
     她至今仍保存著與好友們寄送耶誕節卡片的小小傳統。
    她將生活中的一些重要時刻以書信的形式留下痕跡,比如父親生病
    或者她離家求學的日子。正是由於她對親筆書信及
    文字的熱愛,並深信文字為人們捎來幸福的
    可能,這個故事就此誕生。《高山上的小郵局》是她的
    第一部小說作品。
    </context>
   </info>
   <info>
    <infoname>詳細資料</infoname>
    <context>
    ISBN:9789578787766
    規格:平裝 / 480頁 / 13 x 19 cm / 普通級 / 單色印刷 / 初版
    出版地:台灣
    本書分類:文學小說> 翻譯文學> 其他地區
    本書分類:文學小說> 溫馨/療癒小說
    </context>
   </info>
  </infos>
 </book>
</books>





若我們使用任一瀏覽器來開啟瀏覽

就可以看到樹狀節點結構的可收展的檔案格式內容



XML語法一些重點關鍵字:
XML文件結構
XML文件專用標籤
元素、屬性
字元符和實體引用


較完整的一個XML sample



Full XML Sample


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?xml version = "1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="book_store.xsl"?>
<!DOCTYPE catalog SYSTEM "catalog.dtd">
<cataolog xmlns="http://www.test.com/catalog/">
 <book id="book001">
  <author>Abercrombie, Kim</author>
  <title>XML Developers' Guide</title>
  <genre>Computer</genre>
  <price>45.85</price>
  <publish_date>2008-10-01</publish_date>
  <description>This book is for xml developers</description>
 </book>
</catalog>


這個sample中的一些名詞定義上可參考如下

XML 文檔是一種樹結構
XML 文檔必須包含根元素。該元素是所有其他元素的父元素。
XML 文檔中的元素形成了一棵文檔樹。這棵樹從根部開始,並擴展到樹的最底端

以此XML文檔結構來看

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="計算機">
        <title lang="中文">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
</ bookstore>



轉為樹狀結構圖的示例







XML宣告
語法:

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

xml宣告:位於第一行
version:是版本(目前為止就是1.0
encoding:文件編碼方式通常使用utf-8
standalone:文件類型定義是否在一個文件內,主要兩種屬性選擇yes/no

XML 處理指令
處理指令<?開始 , ?>結束
XML中其實是可以為數據添加樣式做修改的,但比較不推也不常使用。
因為大部分XML著重於資料的存放結構剖析。



XML 元素

指的是從開始標籤直到結束標籤的部分。一個元素可以包含:
  • 其他元素
  • 文本
  • 屬性
  • 或混合以上所有
1. 元素之間的關係:子元素 父元素、祖先 後代 。
2. 元素內容的類型:嵌套元素 、 字符數據 、 實體引用 、 CDATA 節 、 處理指令 、 注
釋 。
所有元素都要有 開始標籤和 結束標籤,開始標籤和結束標籤必須一致。


XML 根元素

  • 每個 XML 文檔必須有且只有一個根元素。
  • 根元素是所有其他元素的父元素 。
  • 根元素是一個完全包括文檔中其他所有元素的元素。
  • 根元素的起始標籤要放在所有其他元素的起始標籤之前。
  • 根元素的結束標籤要放在所有其他元素的結束標籤之後。

XML 子元素


空元素 :如果開始標籤和結束標籤之間沒有內容,可以寫成 < from/>,這稱為“空元素 ”。

以下圖為例,note 是 XML 文件的根元素。
而 to 、 content 、 from 和 date 是根元素 note 的子元素。


XML元素命名規範

  • 名稱區分大小寫
  • 名稱必須以字母或下劃線開頭
  • 名稱不能以字母 xml (或 XML 或 Xml 等)開頭
  • 名稱可以包含字母,數字,連字符 ((--)),下劃線 和點
  • 名稱不能包含空格
  • 名稱中不能含冒號 注:冒號留給命名空間使用







Reference:

XML之簡介
https://slidesplayer.com/slide/11441309/


新版健保資訊網 暨XML醫療費用申報作業
https://slidesplayer.com/slide/11235271/

衛生福利部中央健康保險署官網
https://www.nhi.gov.tw/Content_List.aspx?n=EC5BCEEA16215E1D&topn=D39E2B72B0BDFA15

衛生福利部評鑑合格之醫院名單
https://data.gov.tw/dataset/6271
https://apiservice.mol.gov.tw/OdService/download/A17000000J-020028-vDZ


戀上XML FORMAT
https://www.webtoolkitonline.com/xml-formatter.html

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header