XML의 포함 식(Visual Basic)Embedded Expressions in XML (Visual Basic)

포함 식을 사용 하면 런타임에 계산 되는 식을 포함 하는 XML 리터럴을 만들 수 있습니다.Embedded expressions enable you to create XML literals that contain expressions that are evaluated at run time. 포함 식 <%= expression 의구문은이며,ASP.NET에사용되%>는 구문과 같습니다.The syntax for an embedded expression is <%= expression %>, which is the same as the syntax used in ASP.NET.

예를 들어, 포함 된 식을 리터럴 텍스트 콘텐츠와 결합 하 여 XML 요소 리터럴을 만들 수 있습니다.For example, you can create an XML element literal, combining embedded expressions with literal text content.

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 의 값은 다음과 같습니다.If isbnNumber contains the integer 12345 and modifiedDate contains the date 3/5/2006, when this code executes, the value of book is:

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

포함 식 위치 및 유효성 검사Embedded Expression Location and Validation

포함 식은 XML 리터럴 식 내의 특정 위치에만 나타날 수 있습니다.Embedded expressions can appear only at certain locations within XML literal expressions. 식 위치는 식에서 반환할 수 있는 형식과를 처리 하 Nothing 는 방법을 제어 합니다.The expression location controls which types the expression can return and how Nothing is handled. 다음 표에서는 허용 되는 위치 및 포함 식의 유형에 대해 설명 합니다.The following table describes the allowed locations and types of embedded expressions.

리터럴의 위치Location in literal 식의 형식Type of expression 처리NothingHandling of Nothing
XML 요소 이름XML element name XName ErrorError
XML 요소 내용XML element content Object또는 배열ObjectObject or array of Object 무시됨Ignored
XML 요소 특성 이름XML element attribute name XName 특성 값이 없는 경우 오류가 발생 합니다.NothingError, unless the attribute value is also Nothing
XML 요소 특성 값XML element attribute value Object 특성 선언이 무시 되었습니다.Attribute declaration ignored
XML 요소 특성XML element attribute XAttribute또는 컬렉션XAttributeXAttribute or a collection of XAttribute 무시됨Ignored
XML 문서 루트 요소XML document root element XElement또는 하나의 XElement 개체와 임의의 XProcessingInstruction 수의 및 XComment 개체 컬렉션XElement or a collection of one XElement object and an arbitrary number of XProcessingInstruction and XComment objects 무시됨Ignored
  • XML 요소 이름에 포함 된 식의 예:Example of an embedded expression in an XML element name:

    Dim elementName As String = "contact"
    Dim contact1 As XElement = <<%= elementName %>/>
    
  • XML 요소 내용에 포함 된 식의 예:Example of an embedded expression in the content of an XML element:

    Dim contactName As String = "Patrick Hines"
    Dim contact2 As XElement = 
      <contact><%= contactName %></contact>
    
  • XML 요소 특성 이름에 포함 된 식의 예:Example of an embedded expression in an XML element attribute name:

    Dim phoneType As String = "home"
    Dim contact3 As XElement = 
      <contact <%= phoneType %>="206-555-0144"/>
    
  • XML 요소 특성 값의 포함 식 예제:Example of an embedded expression in an XML element attribute value:

    Dim phoneNumber As String = "206-555-0144"
    Dim contact4 As XElement = 
      <contact home=<%= phoneNumber %>/>
    
  • XML 요소 특성에 포함 된 식의 예:Example of an embedded expression in an XML element attribute:

    Dim phoneAttribute As XAttribute = 
      New XAttribute(XName.Get(phoneType), phoneNumber)
    Dim contact5 As XElement = 
      <contact <%= phoneAttribute %>/>
    
  • XML 문서 루트 요소에 포함 된 식의 예:Example of an embedded expression in an XML document root element:

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

를 사용 Option Strict하는 경우 컴파일러는 각 포함 된 식의 형식이 필요한 형식으로 확대 되는지 확인 합니다.If you enable Option Strict, the compiler checks that the type of each embedded expression widens to the required type. 유일한 예외는 XML 문서의 루트 요소입니다 .이 요소는 코드가 실행 될 때 확인 됩니다.The only exception is for the root element of an XML document, which is verified when the code runs. 없이 Option Strict컴파일하는 경우 형식의 Object 식을 포함 하 고 런타임에 해당 형식을 확인할 수 있습니다.If you compile without Option Strict, you can embed expressions of type Object and their type is verified at run time.

콘텐츠가 선택적인 위치에서를 포함 Nothing 하는 포함 식은 무시 됩니다.In locations where content is optional, embedded expressions that contain Nothing are ignored. 즉, XML 리터럴을 사용 Nothing 하기 전에 요소 내용, 특성 값 및 배열 요소를 확인 하지 않아도 됩니다.This means you do not have to check that element content, attribute values, and array elements are not Nothing before you use an XML literal. 요소 및 특성 이름과 같은 필수 값은 일 Nothing수 없습니다.Required values, such as element and attribute names, cannot be Nothing.

특정 형식의 리터럴에 포함 된 식을 사용 하는 방법에 대 한 자세한 내용은 Xml 문서 리터럴, xml 요소 리터럴을 참조 하세요.For more information about using an embedded expression in a particular type of literal, see XML Document Literal, XML Element Literal.

범위 지정 규칙Scoping Rules

컴파일러는 각 XML 리터럴을 적절 한 리터럴 형식에 대 한 생성자 호출로 변환 합니다.The compiler converts each XML literal into a constructor call for the appropriate literal type. XML 리터럴의 리터럴 콘텐츠 및 포함 식은 생성자에 인수로 전달 됩니다.The literal content and embedded expressions in an XML literal are passed as arguments to the constructor. 즉, XML 리터럴에 사용할 수 있는 모든 Visual Basic 프로그래밍 요소는 포함 된 식에도 사용할 수 있습니다.This means that all Visual Basic programming elements available to an XML literal are also available to its embedded expressions.

Xml 리터럴 내에서 Imports 문으로 선언 된 xml 네임 스페이스 접두사에 액세스할 수 있습니다.Within an XML literal, you can access the XML namespace prefixes declared with the Imports statement. xmlns 특성을 사용 하 여 요소에서 새 xml 네임 스페이스 접두사를 선언 하거나 기존 xml 네임 스페이스 접두사를 숨길 수 있습니다.You can declare a new XML namespace prefix, or shadow an existing XML namespace prefix, in an element by using the xmlns attribute. 새 네임 스페이스는 해당 요소의 자식 노드에서 사용할 수 있지만 포함 식의 XML 리터럴이 아닙니다.The new namespace is available to the child nodes of that element, but not to XML literals in embedded expressions.

참고

xmlns 네임 스페이스 특성을 사용 하 여 XML 네임 스페이스 접두사를 선언 하는 경우 특성 값은 상수 문자열 이어야 합니다.When you declare an XML namespace prefix by using the xmlns namespace attribute, the attribute value must be a constant string. 이와 관련 하 여 xmlns 특성을 사용 하는 것은 Imports 문을 사용 하 여 XML 네임 스페이스를 선언 하는 것과 같습니다.In this regard, using the xmlns attribute is like using the Imports statement to declare an XML namespace. 포함 식을 사용 하 여 XML 네임 스페이스 값을 지정할 수 없습니다.You cannot use an embedded expression to specify the XML namespace value.

참고자료See also