[筆記][Biztalk]看懂XML Schema

Biztalk 2013的運作架構中,會使用各種型別的Message物件進行資料的傳遞或觸發流程的運作。該Message都是各式各樣的**XML,而定義XML格式就是透過XSD檔,也就是Biztalk開發專案中的Schema

因此,看懂Schema的內容是很重要的一件事。如果對XML及Schema沒有基本的認識,很容易就陷在Biztalk的Error 訊息中而出不來。以下整理在看懂XSD的內容時所找的XML相關資訊。


XML是甚麼?

XML是用來存放及傳遞資料的一種工具

參考: Introduction to XML

XML 基本規則

一個合乎標準("Well Formed")的XML須符合以下的規則

  • XML 需有一個 Root Element
  • XML prelog是optional,如果有的話,必須在文件的第一行 XML prelog是指以下這個東西

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

  • 所有的 XML Elements 必須有 Closing Tag
  • XML Tags是有區分大小寫的
  • XML Element必須是巢狀結構,不能夠有Element相互穿插的狀況
  • XML Attribute 的值必須使用雙引號包起來
  • 特殊符號符合Entity References的規則
  • Comment符合規則

參考: XML Syntax Rules

XML Namespaces

XML Namespace的目的是為了防止XML Element的命名重複造成的命名衝突問題。

例如以下的XML中有兩個table XML Element,故使用XML Namespace進行區分

```xml

<root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="https://www.w3schools.com/furniture">

<h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table>

<f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>

```

參考: XML Namespace

XML Schema

XML Schema是用來描述XML 文件的結構,它本身也是一種XML 文件,所以也需要符合XML的語法。所以,一個XSD 文件也有一個標準的XSD用來規範它的結構及Element。

在XML Schema中,根Element會是<schema>。一個XML Schema看起來會是這樣

```xml

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="https://myCompany" xmlns="https://www.w3schools.com"> ... ... </xs:schema> ```

  • xmlns:xs="http://www.w3.org/2001/XMLSchema"是指xs:開頭的元素都是用來定義schema的標準元素
  • targetNamespace="https://myCompany"是指此Schema所定義的XML的元素的default Namespace是"https://myCompany"
  • xmlns="https://www.w3schools.com"是指此份XSD檔的defualt Namespace是"https://www.w3schools.com"

參考:XSD - The Element

XPath語法

XPath可用一段表述式(expressions)來取得XML document中的某一個node(element, attribute, text, namespace, processing-instruction, comment都是node)或是node的集合。它包含了超過200個 built-in functions。

XPath語法可以參考XPath Syntax