XML의 포함 식(Visual Basic)

포함된 식을 사용하면 런타임에 평가되는 식을 포함하는 XML 리터럴을 만들 수 있습니다. 포함된 식의 구문은 <%=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(이)가 날짜 2006년 3월 5일을 포함하는 경우 이 코드가 실행되면 book의 값은 다음과 같습니다.

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

포함된 식 위치 및 유효성 검사

포함된 식은 XML 리터럴 식 내의 특정 위치에만 나타날 수 있습니다. 식 위치는 식이 반환할 수 있는 형식과 Nothing(이)가 처리되는 방법을 제어합니다. 다음 표에서는 허용되는 위치 및 포함된 식의 형식에 대해 설명합니다.

리터럴의 위치 식 형식 Nothing의 처리
XML 요소 이름 XName Error
XML 요소 콘텐츠 Object 또는 Object의 배열 무시됨
XML 요소 특성 이름 XName 특성 값도 Nothing(이)가 아닌 경우 오류
XML 요소 특성 값 Object 특성 선언이 무시됨
XML 요소 특성 XAttribute 또는 XAttribute의 컬렉션 무시됨
XML 문서 루트 요소 XElement 또는 하나의 XElement 개체와 XProcessingInstructionXComment 개체의 임의의 수 컬렉션 무시됨
  • 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(을)를 사용하도록 설정하면 컴파일러는 포함된 각 식의 형식이 필요한 형식으로 확장되는지 확인합니다. 유일한 예외는 코드가 실행될 때 확인되는 XML 문서의 루트 요소에 대한 것입니다. Option Strict 없이 컴파일하는 경우 Object 형식의 식을 포함할 수 있으며 해당 형식 은 런타임에 확인됩니다.

콘텐츠가 선택 사항인 위치에서 Nothing(이)가 포함되는 식은 무시됩니다. 즉, XML 리터럴을 사용하기 전에 요소 콘텐츠, 특성 값 및 배열 요소가 Nothing(이)가 아닌지 확인할 필요가 없습니다. 요소 및 특성 이름과 같은 필수 값은 Nothing(이)가 될 수 없습니다.

특정 형식의 리터럴에서 포함된 식을 사용하는 방법에 대한 자세한 내용은 XML 문서 리터럴, XML 요소 리터럴을 참조하세요.

범위 지정 규칙

컴파일러는 각 XML 리터럴을 적절한 리터럴 형식에 대한 생성자 호출로 변환합니다. XML 리터럴의 리터럴 콘텐츠와 포함된 식은 생성자에 인수로 전달됩니다. 즉, XML 리터럴에 사용할 수 있는 모든 Visual Basic 프로그래밍 요소를 포함된 식에서도 사용할 수 있습니다.

XML 리터럴 내에서 Imports 문으로 선언된 XML 네임스페이스 접두사에 액세스할 수 있습니다. xmlns 특성을 사용해 요소에서 새 XML 네임스페이스 접두사를 선언하거나 기존 XML 네임스페이스 접두사를 숨길 수 있습니다. 새 네임스페이스는 해당 요소의 자식 노드에서 사용할 수 있지만 포함된 식의 XML 리터럴에는 사용할 수 없습니다.

참고 항목

xmlns 네임스페이스 특성을 사용하여 XML 네임스페이스 접두사를 선언하는 경우 특성 값은 상수 문자열이어야 합니다. 이와 관련하여 xmlns 특성을 사용하는 것은 Imports 문을 사용하여 XML 네임스페이스를 선언하는 것과 같습니다. 포함된 식을 사용하여 XML 네임스페이스 값을 지정할 수 없습니다.

참고 항목