【問題K21】XML 語法檢查。 [回頁]

XML 是一種標籤語言,最主要的用途是用來作資料交換;每個XML 文件為純文字檔,需符合一定的規範。 本題請各位寫一支程式幫忙檢查XML文件是否符合以下四種規則,違反任一項規則此XML文件就視為不合法。

標籤有以下三種組合

1.<標籤名稱>中間沒有任何空白

2.</標籤名稱>中間沒有任何空白

3.<標籤名稱/>中間沒有任何空白

4.<標籤名稱 屬性設定>       標籤名稱和屬性設定(只會有一組屬性設定)中間夾一個空白

<, >, / 是特定的符號只會出現在標籤中,不會出現在XML文件的其他部分,測試資料均會符合以上的原則,程式不必檢查。

標籤規則如下:

1.標籤和標籤之間不能交叉重疊。

  例如:

<TAG1><TAG2> 1234 </TAG2></TAG1>     (O)

<TAG1><TAG2> 1234 </TAG1></TAG2>     (X)

2.有始有終,每個開頭標籤一定要有結尾標籤。例如:文件中如果出現<TAG1>之後就一定要有</TAG1>

<TAG1><TAG2>1234</TAG2></TAG1>     (O)

<TAG1> <TAG2>1234</TAG2>           (X)

3.開頭標籤和結尾標籤之間若沒有值,可以用開頭標籤加上/取代表示,也就是   <TAG1></TAG1>可以直接用<TAG1/>表示。

<TAG1></TAG1>   (O)

<TAG1/>         (O)

4.標籤有屬性,屬性值一定要用雙引號框住,且屬性與屬性值間用等號連接,不可有空白。例如:

<TAG1 NAME="ABC2"></TAG1>       (O)

<TAG1 NAME=ABC2></TAG1>         (X)

<TAG1 NAME="ABC2></TAG1>        (X)

輸入檔說明

  為簡化問題規範測試資料範圍如下:1.標籤名稱長度不超過 32 個字元;2.一份文件中最多出現 256 個的標籤;3.標籤名稱,屬性名稱,屬性質一律由大寫英文字母或數字所組成。

輸入檔包含數筆測試資料,每筆測試資料的第一行會有一個整數N (N>=0) , 代表以下有 N 行是XML文件;如果 N=0 表示測試資料結束。

輸出檔說明

   如果該筆測試資料通過題目的標籤規則檢查,則輸出一個 1; 否則輸出一個 0,每筆輸出資料均需換行。

範例輸入

1

<TAG1><TAG2></TAG1></TAG2>

3

<TAG1>

  <TAG3/>

</TAG1>

2

<TAG1 NAME  ="123">

</TAG1>

0


範例輸出

0

1

0