Bagikan melalui


Ekspresi Tersemat di XML (Visual Basic)

Ekspresi tersemat memungkinkan Anda membuat literal XML yang berisi ekspresi yang dievaluasi pada durasi. Sintaks untuk ekspresi yang disematkan adalah <%=expression%>, yang sama dengan sintaks yang digunakan dalam ASP.NET.

Misalnya, Anda dapat membuat elemen XML secara harfiah, menggabungkan ekspresi yang disematkan dengan konten teks harfiah.

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>

Jika isbnNumber berisi bilangan bulat 12345 dan modifiedDate berisi tanggal 3/5/2006, ketika kode ini dijalankan, nilai dari book adalah:

<book category="fiction" isbn="12345">  
  <modifiedDate>3/5/2006</modifiedDate>  
</book>  

Lokasi dan Validasi Ekspresi Tersemat

Ekspresi yang disematkan hanya dapat muncul di lokasi tertentu dalam ekspresi literal XML. Lokasi ekspresi mengontrol jenis ekspresi mana yang dapat dikembalikan dan bagaimana Nothing ditangani. Tabel berikut ini menjelaskan lokasi dan jenis ekspresi yang disematkan yang diizinkan.

Lokasi dalam literal Jenis ekspresi Penanganan Nothing
Nama elemen XML XName Kesalahan
Konten elemen XML Object atau array dari Object Diabaikan
Nama atribut elemen XML XName Kesalahan, kecuali nilai atribut juga Nothing
Nilai atribut elemen XML Object Deklarasi atribut diabaikan
Nama atribut elemen XML XAttribute atau koleksi XAttribute Diabaikan
Elemen akar dokumen XML XElement atau kumpulan satu objek XElement dan jumlah objek XProcessingInstruction dan arbitrer XComment Diabaikan
  • Contoh ekspresi yang disematkan dalam nama elemen XML:

    Dim elementName As String = "contact"
    Dim contact1 As XElement = <<%= elementName %>/>
    
  • Contoh ekspresi yang disematkan dalam konten elemen XML:

    Dim contactName As String = "Patrick Hines"
    Dim contact2 As XElement = 
      <contact><%= contactName %></contact>
    
  • Contoh ekspresi yang disematkan dalam nama atribut elemen XML:

    Dim phoneType As String = "home"
    Dim contact3 As XElement = 
      <contact <%= phoneType %>="206-555-0144"/>
    
  • Contoh ekspresi yang disematkan dalam nilai atribut elemen XML:

    Dim phoneNumber As String = "206-555-0144"
    Dim contact4 As XElement = 
      <contact home=<%= phoneNumber %>/>
    
  • Contoh ekspresi yang disematkan dalam atribut elemen XML:

    Dim phoneAttribute As XAttribute = 
      New XAttribute(XName.Get(phoneType), phoneNumber)
    Dim contact5 As XElement = 
      <contact <%= phoneAttribute %>/>
    
  • Contoh ekspresi yang disematkan dalam elemen akar dokumen XML:

    Dim document As XDocument = 
      <?xml version="1.0"?><%= contact1 %>
    

Jika Anda mengaktifkan Option Strict, pengkompilasi memeriksa bahwa jenis setiap ekspresi yang disematkan melebar ke jenis yang diperlukan. Satu-satunya pengecualian adalah untuk elemen akar dokumen XML, yang diverifikasi saat kode berjalan. Jika Anda mengkompilasi tanpa Option Strict, Anda dapat menyematkan ekspresi jenis Object dan jenisnya diverifikasi pada durasi.

Di lokasi di mana konten bersifat opsional, ekspresi tersemat yang berisi Nothing yang diabaikan. Ini berarti Anda tidak perlu memeriksa bahwa konten elemen, nilai atribut, dan elemen array tidak Nothing sebelum Anda menggunakan literal XML. Nilai yang diperlukan, seperti elemen dan nama atribut, tidak boleh Nothing.

Untuk informasi selengkapnya tentang menggunakan ekspresi yang disematkan dalam jenis harfiah tertentu, lihat Literal Dokumen XML, Elemen XML Literal.

Aturan Cakupan

Pengkompilasi mengonversi setiap literal XML menjadi panggilan konstruktor untuk jenis harfiah yang sesuai. Konten harfiah dan ekspresi yang disematkan dalam literal XML diteruskan sebagai argumen ke konstruktor. Ini berarti bahwa semua elemen pemrograman Visual Basic yang tersedia untuk literal XML juga tersedia untuk ekspresi yang disematkan.

Dalam literal XML, Anda dapat mengakses awalan namespace XML yang dideklarasikan dengan pernyataan Imports. Anda dapat mendeklarasikan awalan namespace XML baru, atau membayangi awalan namespace XML yang ada, dalam elemen dengan menggunakan atribut xmlns. Namespace baru tersedia untuk simpul anak dari elemen tersebut, tetapi tidak untuk XML harfiah dalam ekspresi yang disematkan.

Catatan

Saat Anda mendeklarasikan awalan namespace XML dengan menggunakan atribut namespace xmlns, nilai atribut harus berupa string konstanta. Dalam hal ini, menggunakan atribut xmlns seperti menggunakan pernyataan Imports untuk mendeklarasikan namespace XML. Anda tidak dapat menggunakan ekspresi tersemat untuk menentukan nilai namespace XML.

Lihat juga