Visual Studio 中的標記驗證
當您在 Visual Studio Web 設計工具中編輯標記 (在 [原始碼] 檢視中編輯 Web Form 網頁) 時,編輯器會檢查標記是否有效。 標記驗證的工作方式與文字處理程式中的拼字檢查一樣。 編輯器在檢查標記之後,會在無效的項目或屬性下加上紅色波浪底線。
編輯器會根據目前選取的驗證結構描述,藉以判斷有效的項目是什麼。 例如,如果將結構描述設為 HTML5,編輯器會比較網頁中的標記和定義有效 HTML5 的結構描述。 如果將結構描述更改為 XHTML5,編輯器會針對 XHTML5 結構描述檢查您網頁中的標記。
驗證錯誤不會讓網頁停止執行, 它只會簡單地提供您回應,指出網頁的標記不符合所選標記語言的結構描述。
選取結構描述
Visual Studio 包括如 HTML5、XHTML5、HTML 4.01 和 XHTML 1.1 標準的結構描述。 您可以讓 Visual Studio 基於網頁中的 DOCTYPE 值來決定結構描述。 或者,您可以從 [HTML 原始檔編輯] 工具列的下拉式清單中選取結構描述。 您也可以在 [選項] 對話方塊中選取預設的驗證結構描述。
檢視驗證錯誤
編輯器會以下列方式顯示驗證錯誤:
加上底線的項目:對無效的項目或屬性加上波浪底線。
工具提示:如果在加上波浪底線的項目上按住滑鼠指標,工具提示就會顯示錯誤的詳細資料。
錯誤清單:如果已開啟 [錯誤清單] 視窗,可以看到包含所有驗證錯誤 (視為警告) 的清單。 若要開啟 [錯誤清單] 視窗,請選擇 [檢視],然後選擇 [錯誤清單]。 若要從鍵盤開啟清單,請輸入 Ctrl+\ 然後輸入 E。 按兩下 [錯誤清單] 視窗中的錯誤,就可以直接進入編輯器的錯誤所在。
驗證的檢查項目
標記驗證會檢查下列項目:
允許的標記:有些瀏覽器結構描述所支援的標記在其他瀏覽器中並不允許使用。 例如,<blink> 標記 (Tag) 只在 Netscape 瀏覽器中支援,因此在其他結構描述中會將這個標記 (Tag) 標記 (Mark) 為無效。
允許的屬性:驗證會檢查項目是否允許使用該項目內的屬性。
必要的屬性:驗證會檢查是否包含所有必要的屬性。 例如在 XHTML 1.1 中,<script> 標記必須具有 type 屬性。
允許的屬性值:如果屬性僅支援特定的列舉值 (例如 true 或 false),則驗證會標記出不符合所允許值的任何值。
允許的 CSS 值:驗證會檢查是否允許使用 style 屬性的階層式樣式表 (CSS)。
允許的子項目:驗證會檢查提供的父項目是否允許使用子項目。
是否正確使用引號括住屬性值:視結構描述而定,可能需要使用引號括住屬性值。 若是不需要使用引號的結構描述,驗證會檢查出現的引號是否符合。 當結構描述不需要使用引號括住屬性值時,您可以設定 Visual Studio 是否對它們進行檢查。 請參閱本主題稍後的「自訂驗證」。
大小寫規則:視結構描述而定,項目和屬性名稱可能需要為小寫字母。 如果結構描述在名稱中允許使用大寫或小寫字母,驗證會根據您設定的驗證選項檢查它們。 請參閱本主題稍後的「自訂驗證」。
唯一的項目 ID:驗證會確認在整個頁面中項目 ID 的唯一性。
語式正確項目 (Well-Formed):如果結構描述需要的話,驗證會確認所有開頭標記都有對應的結尾標記。
項目的開頭和結尾順序:驗證會檢查您沒有交叉的開頭和結尾項目,例如 <b><i>text</b></i>。
過期舊式的標記或屬性:XHTML5 之類的結構描述會將 <font> 這種標記標上錯誤,告知您已不再支援此標記。
相對超連結和圖形的有效目標:驗證會確認相對於目前站台之任何目標的有效性,但不會檢查完整 URL 的有效性。
驗證頁面輸出
驗證會在設計工具中檢查頁面的標記。 但是當頁面在瀏覽器中執行時,無法保證會對特定的結構描述驗證頁面的輸出。 如果是 Web Form 網頁,在處理頁面時,個別的 ASP.NET 伺服器控制項和頁面本身會將標記 (有時候包括指令碼) 呈現到頁面中。 設計工具中的驗證無法存取該輸出。 在執行階段所建立的標記和指令碼,對大多數瀏覽器來說都是有效的。 ASP.NET 網頁和伺服器控制項會呈現與 XHTML5 相容的標記。 有關詳細資訊,請參閱Visual Studio and ASP.NET 中的 XHTML 標準。
驗證和 IntelliSense
指定結構描述不僅會控制驗證,也會控制可在 IntelliSense 中使用的標記和屬性清單。 例如,XHTML5 結構描述並不提供 <font> 標記,因為 <font> 標記已經在該結構描述中被取代了。
自訂驗證
視目前使用的結構描述而定,您也許可以指定其他驗證選項。 例如,如果您使用 HTML5,可以選擇下列條件是否顯示為錯誤:
用戶端標記不是小寫時
標記語式不正確時
屬性值未加上引號時
項目或屬性被取代時
驗證多個命名空間
在網頁中,可以加入使用自己的命名空間 (Namespace) 所宣告的標記區塊。 例如,網頁內嵌 XML 區塊中可能包含其自身項目的命名空間宣告。 在上述情形中,驗證的執行會依據目前頁面結構描述和內嵌區塊之命名空間而決定。