XML 中內嵌的運算式 (Visual Basic)
內嵌運算式可以讓您建立 XML 常值 (Literal),其中包含在執行階段進行評估的運算式。 內嵌運算式的語法為 <%= expression %>,與 ASP.NET 中使用的語法相同。
例如,您可以建立 XML 項目常值,將常值文字內容與內嵌運算式結合在一起。
Dim isbnNumber As String = "12345"
Dim modifiedDate As String = "3/5/2006"
Dim book As XElement =
<book category="fiction" isbn=<%= isbnNumber %>>
<modifiedDate><%= modifiedDate %></modifiedDate>
</book>
如果 isbnNumber 包含整數 12345 且 modifiedDate 包含日期 3/5/2006,則當程式碼執行時,book 的值是:
<book category="fiction" isbn="12345">
<modifiedDate>3/5/2006</modifiedDate>
</book>
內嵌運算式位置及驗證
內嵌運算式只能顯示在 XML 常值運算式內的特定位置。 運算式位置控制運算式可以傳回的型別以及處理 Nothing 的方式。 下表說明允許的內嵌運算式位置和型別。
常值中的位置 |
運算式型別 |
處理 Nothing |
XML 項目名稱 |
錯誤 |
|
XML 項目內容 |
Object 或 Object 的陣列 |
略過 |
XML 項目屬性名稱 |
錯誤,除非屬性 (Attribute) 值也是 Nothing |
|
XML 項目屬性值 |
Object |
略過屬性宣告 |
XML 項目屬性 |
XAttribute 或 XAttribute 的集合 |
略過 |
XML 文件根項目 |
XElement 或一個 XElement 物件和任意數量 XProcessingInstruction 及 XComment 物件的集合 |
略過 |
XML 項目名稱中內嵌運算式的範例:
Dim elementName As String = "contact" Dim contact1 As XElement = <<%= elementName %>/>
XML 項目內容中內嵌運算式的範例:
Dim contactName As String = "Patrick Hines" Dim contact2 As XElement = <contact><%= contactName %></contact>
XML 項目屬性名稱中內嵌運算式的範例:
Dim phoneType As String = "home" Dim contact3 As XElement = <contact <%= phoneType %>="206-555-0144"/>
XML 項目屬性值中內嵌運算式的範例:
Dim phoneNumber As String = "206-555-0144" Dim contact4 As XElement = <contact home=<%= phoneNumber %>/>
XML 項目屬性中內嵌運算式的範例:
Dim phoneAttribute As XAttribute = New XAttribute(XName.Get(phoneType), phoneNumber) Dim contact5 As XElement = <contact <%= phoneAttribute %>/>
XML 文件根項目中內嵌運算式的範例:
Dim document As XDocument = <?xml version="1.0"?><%= contact1 %>
如果您啟用 Option Strict,編譯器 (Compiler) 會檢查每個內嵌運算式的型別是否擴展為所需型別。 唯一的例外狀況 (Exception) 是 XML 文件的根項目 (Root Element),根項目是在程式碼執行時進行驗證。 如果編譯時不使用 Option Strict,則可內嵌型別 Object 的運算式,而其型別會在執行階段驗證。
在內容為選擇性的位置中,會略過包含 Nothing 的內嵌運算式。 這表示在您使用 XML 常值之前,不需要檢查項目內容、屬性值及陣列項目是否為 Nothing。 必要的值 (例如項目和屬性名稱) 不得為 Nothing。
如需在特定常值型別中使用內嵌運算式的詳細資訊,請參閱 XML 文件常值 (Visual Basic)和 XML 項目常值 (Visual Basic)。
設定規則的範圍
編譯器會將每個 XML 常值轉換為適當常值型別的建構函式 (Constructor) 呼叫。 XML 常值中的常值內容和內嵌運算式會傳遞給建構函式的引數。 這表示所有可供 XML 常值使用的 Visual Basic 程式設計項目,也可供內嵌運算式使用。
在 XML 常值中,您可以存取以 Imports 陳述式 (Statement) 宣告的 XML 命名空間前置字元。 您可以使用 xmlns 屬性,在項目中宣告新的 XML 命名空間前置字元,或遮蔽現有 XML 命名空間前置字元。 新的命名空間 (Namespace) 可供該項目的子節點使用,但是不可供內嵌運算式中的 XML 常值使用。
注意事項 |
---|
當您使用 xmlns 命名空間屬性宣告 XML 命名空間前置字元時,屬性值必須是常數字串。 就這點而言,使用 xmlns 屬性類似於使用 Imports 陳述式宣告 XML 命名空間。 您無法使用內嵌運算式指定 XML 命名空間值。 |