XML 中的左尖括號

2021-06-07 00:58:43 字數 956 閱讀 8689

最近遇到了乙個很棘手的問題,找了好久都沒找到原因,後來終於找到了卻令人迷惑。乙個在我看來應該是xml語法錯誤的xml配置檔案卻能夠通過xml schema 的校驗。這個有語法錯誤的xml 配置檔案最終導致了整個程式的錯誤。這個檔案的片段如下:

aggregate type="none" groupby="true"/>

一眼就能看到第二行其實是乙個element,在"aggregate"之前應該還有乙個「<」。 很明顯的乙個疏忽引起的xml格式錯誤,但是這樣乙個檔案在進行xml schema 校驗時卻通過了,這是怎麼回事,難道說schema校驗並不關注xml本身的格式是否正確嗎?

帶著這樣的疑問我將該xml做了修改:

補上了左括號但是去掉了右括號,這次卻令人意外的報錯,說是格式錯誤。 這是怎麼回事呢?

最終在xml文件中找到了答案:

the ampersand character (&) and the left angle bracket (< 

就是說在xml檔案中,使用者定義的value中「&」和「<」是絕對不允許的,那就是說">"其實是允許的,看看第乙個xml片段,缺少了「<」, 

"aggregate type="none" groupby="true"/>" 其實是被xml 當成了「snapmetric」 這個元素中的文字內容而不是子元素。這就解釋了為什麼這個xml沒有被校驗出個事錯誤的原因。那如何讓xml 不把「aggregate type="none" groupby="true"/>「當成文字呢? 有乙個辦法,哈哈。

看看我的schema定義:

mixed="false">

看到紅色字型的」mixed="false"「了嗎,它表示這個元素只包含子元素,不會包含文字,這就限制了xml把缺少左尖括號的子元素當做文字的可能。

但是如果元素本身設計成可能包含文字,那就真的沒轍了!

Python小括號 中括號 大括號和尖括號的含義

在使用python做專案的過程中發現這種語言使用了很多種型別的括號來表達資料型別,常見的有四種,分別是 小括號 中括號 和大括號,也叫做花括號,還有尖括號 其作用也各不相同,分別用來代表不同的python基本內建資料型別。1 python中的小括號 代表tuple元組資料型別,元組是一種不可變序列。...

OC中 import 尖括號和引號的區別

在oc中,我們引用乙個標頭檔案,可以使用 import a.h 也可以使用 import,那麼這兩種方式有什麼區別呢?和在c c 中一樣,使用 引入的是本地工程的檔案,而使用 引入的是系統庫的檔案。在使用中,會先查詢使用者目錄下檔案是否存在,或者說是user header search paths,...

include中尖括號和雙引號的區別

include 和 include 的區別 一 引用的標頭檔案不同 include 引用的是編譯器的類庫路徑裡面的標頭檔案。include 引用的是你程式目錄的相對路徑中的標頭檔案。二 用法不同 include 用來包含標準標頭檔案 例如stdio.h或stdlib.h include 用來包含非標...