Vložené výrazy v XML (Visual Basic)
Vložené výrazy umožňují vytvářet literály XML obsahující výrazy, které se vyhodnocují za běhu. Syntaxe vloženého výrazu je <%=
expression
%>
stejná jako syntaxe použitá v ASP.NET.
Můžete například vytvořit literál elementu XML, který kombinuje vložené výrazy s obsahem literálového textu.
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>
Pokud isbnNumber
obsahuje celé číslo 12345 a modifiedDate
obsahuje datum 3.5.2006, při spuštění tohoto kódu je hodnota book
:
<book category="fiction" isbn="12345">
<modifiedDate>3/5/2006</modifiedDate>
</book>
Umístění a ověření vloženého výrazu
Vložené výrazy se můžou zobrazovat pouze v určitých umístěních v rámci výrazů literálů XML. Umístění výrazu určuje, které typy výrazu mohou vrátit a jak Nothing
se zpracovává. Následující tabulka popisuje povolená umístění a typy vložených výrazů.
Umístění v literálu | Typ výrazu | Zpracování Nothing |
---|---|---|
Název elementu XML | XName | Chyba |
Obsah elementu XML | Object nebo pole Object |
Ignorováno |
Název atributu elementu XML | XName | Chyba, pokud není hodnota atributu také Nothing |
Hodnota atributu elementu XML | Object |
Deklarace atributu byla ignorována. |
Atribut elementu XML | XAttribute nebo kolekci XAttribute | Ignorováno |
Kořenový element dokumentu XML | XElement nebo kolekci jednoho XElement objektu a libovolného XProcessingInstruction počtu a XComment objektů | Ignorováno |
Příklad vloženého výrazu v názvu elementu XML:
Dim elementName As String = "contact" Dim contact1 As XElement = <<%= elementName %>/>
Příklad vloženého výrazu v obsahu elementu XML:
Dim contactName As String = "Patrick Hines" Dim contact2 As XElement = <contact><%= contactName %></contact>
Příklad vloženého výrazu v názvu atributu elementu XML:
Dim phoneType As String = "home" Dim contact3 As XElement = <contact <%= phoneType %>="206-555-0144"/>
Příklad vloženého výrazu v hodnotě atributu elementu XML:
Dim phoneNumber As String = "206-555-0144" Dim contact4 As XElement = <contact home=<%= phoneNumber %>/>
Příklad vloženého výrazu v atributu elementu XML:
Dim phoneAttribute As XAttribute = New XAttribute(XName.Get(phoneType), phoneNumber) Dim contact5 As XElement = <contact <%= phoneAttribute %>/>
Příklad vloženého výrazu v kořenovém elementu dokumentu XML:
Dim document As XDocument = <?xml version="1.0"?><%= contact1 %>
Pokud povolíte Option Strict
, kompilátor zkontroluje, že typ každého vloženého výrazu se rozšíří na požadovaný typ. Jedinou výjimkou je kořenový prvek dokumentu XML, který se ověřuje při spuštění kódu. Pokud zkompilujete bez Option Strict
, můžete vložit výrazy typu Object
a jejich typ se ověří za běhu.
V umístěních, kde je obsah volitelný, se vložené výrazy, které obsahují Nothing
, ignorují. To znamená, že před použitím literálu XML nemusíte kontrolovat obsah elementu, hodnoty atributů a elementy Nothing
pole. Požadované hodnoty, například názvy elementů a atributů, nemohou být Nothing
.
Další informace o použití vloženého výrazu v určitém typu literálu naleznete v tématu Xml Document Literal, XML Element Literal.
Pravidla oborů
Kompilátor převede každý literál XML na volání konstruktoru pro příslušný typ literálu. Literální obsah a vložené výrazy v literálu XML jsou předány jako argumenty konstruktoru. To znamená, že všechny programovací prvky jazyka Visual Basic dostupné pro literál XML jsou také k dispozici pro vložené výrazy.
V literálu XML můžete získat přístup k předponám oboru názvů XML deklarovaným pomocí Imports
příkazu. Pomocí atributu můžete deklarovat novou předponu oboru názvů XML nebo stínovat existující předponu oboru názvů XML v elementu xmlns
. Nový obor názvů je k dispozici podřízeným uzlům tohoto elementu, ale nikoli literálům XML ve vložených výrazech.
Poznámka:
Když deklarujete předponu oboru názvů XML pomocí atributu xmlns
oboru názvů, hodnota atributu musí být konstantní řetězec. V tomto ohledu se použití atributu xmlns
podobá použití Imports
příkazu k deklaraci oboru názvů XML. Vložený výraz nelze použít k zadání hodnoty oboru názvů XML.