XslCompiledTransform 클래스

정의

XSLT 스타일시트를 사용하여 XML 데이터를 변환합니다.

public ref class XslCompiledTransform sealed
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XslCompiledTransform requires dynamic code because it generates IL at runtime.")]
public sealed class XslCompiledTransform
public sealed class XslCompiledTransform
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XslCompiledTransform requires dynamic code because it generates IL at runtime.")>]
type XslCompiledTransform = class
type XslCompiledTransform = class
Public NotInheritable Class XslCompiledTransform
상속
XslCompiledTransform
특성

예제

다음 예제에서는 변환을 실행하고 파일에 출력합니다.

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html");
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
        
' Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html")

샘플에서는 다음 두 개의 입력 파일을 사용합니다.

<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="bookstore">
  <HTML>
    <BODY>
      <TABLE BORDER="2">
        <TR>
          <TD>ISBN</TD>
          <TD>Title</TD>
          <TD>Price</TD>
        </TR>
        <xsl:apply-templates select="book"/>
      </TABLE>
    </BODY>
  </HTML>
</xsl:template>
<xsl:template match="book">
  <TR>
    <TD><xsl:value-of select="@ISBN"/></TD>
    <TD><xsl:value-of select="title"/></TD>
    <TD><xsl:value-of select="price"/></TD>
  </TR>
</xsl:template>
</xsl:stylesheet>

설명

클래스는 XslCompiledTransform XSLT 1.0 구문을 지원하는 XSLT 프로세서입니다. 이 구현은 새로운 구현이며 사용되지 않는 XslTransform 클래스와 비교할 때 성능 향상을 포함합니다. 클래스의 XslCompiledTransform 구조는 클래스와 매우 유사합니다 XslTransform . 메서드는 Load 스타일시트를 로드하고 컴파일하고 메서드는 Transform XSLT 변환을 실행합니다.

XSLT document() 함수 및 포함된 스크립트 블록에 대한 지원은 기본적으로 사용하지 않도록 설정됩니다. 이러한 기능은 개체를 XsltSettings 만들고 메서드에 전달 Load 하여 사용하도록 설정할 수 있습니다.

자세한 내용은 XslCompiledTransform 클래스 사용XslTransform 클래스에서 마이그레이션을 참조하세요.

보안 고려 사항

클래스를 사용하는 애플리케이션을 XslCompiledTransform 만들 때 다음 항목과 해당 의미를 알고 있어야 합니다.

  • XSLT 스크립팅은 기본적으로 사용하지 않도록 설정됩니다. XSLT 스크립팅은 스크립트 지원이 필요하고 완전히 신뢰할 수 있는 환경에서 작업하는 경우에만 사용하도록 설정해야 합니다.

  • XSLT document() 함수는 기본적으로 사용하지 않도록 설정됩니다. 함수를 document() 사용하도록 설정하면 메서드에 전달 ThrowingResolver 하여 액세스할 수 있는 리소스를 Transform 제한합니다.

  • 확장 개체는 기본적으로 사용하도록 설정됩니다. XsltArgumentList 확장 개체를 포함하는 객체가 Transform 메서드에 전달되면, 이러한 객체가 활용됩니다.

  • XSLT 스타일시트에는 다른 파일 및 포함된 스크립트 블록에 대한 참조가 포함될 수 있습니다. 악의적인 사용자는 실행 시 컴퓨터가 리소스에서 부족해질 때까지 시스템이 처리될 수 있는 데이터 또는 스타일시트를 제공하여 이를 악용할 수 있습니다.

  • 혼합 신뢰 환경에서 실행되는 XSLT 애플리케이션은 스타일시트 스푸핑이 발생할 수 있습니다. 예를 들어 악의적인 사용자는 유해한 스타일시트를 사용하여 개체를 로드하고 나중에 메서드를 호출 Transform 하고 변환을 실행하는 다른 사용자에게 전달할 수 있습니다.

스타일시트가 신뢰할 수 있는 원본에서 제공되지 않는 한 스크립팅 또는 document() 함수를 사용하도록 설정하지 않고 신뢰할 수 없는 원본의 개체, XSLT 스타일시트 또는 XML 원본 데이터를 허용하지 XslCompiledTransform 않음으로써 이러한 보안 문제를 완화할 수 있습니다.

생성자

Name Description
XslCompiledTransform()

XslCompiledTransform 클래스의 새 인스턴스를 초기화합니다.

XslCompiledTransform(Boolean)

지정된 디버그 설정을 사용하여 클래스의 XslCompiledTransform 새 인스턴스를 초기화합니다.

속성

Name Description
OutputSettings

스타일시트 XmlWriterSettings 요소에서 xsl:output 파생된 출력 정보를 포함하는 개체를 가져옵니다.

TemporaryFiles

메서드를 TempFileCollection 성공적으로 호출 Load 한 후 디스크에서 생성된 임시 파일이 포함된 파일을 가져옵니다.

메서드

Name Description
CompileToType(XmlReader, XsltSettings, XmlResolver, Boolean, TypeBuilder, String)

XSLT 스타일시트를 지정된 형식으로 컴파일합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
Load(IXPathNavigable, XsltSettings, XmlResolver)

에 포함된 XSLT 스타일시트를 IXPathNavigable컴파일합니다. XSLT XmlResolverimport 또는 include 요소를 확인하고 XSLT 설정에 따라 스타일시트에 대한 사용 권한이 결정됩니다.

Load(IXPathNavigable)

개체에 포함된 스타일시트를 컴파일합니다 IXPathNavigable .

Load(MethodInfo, Byte[], Type[])

유틸리티를 사용하여 컴파일된 스타일시트에서 메서드를 로드합니다 XSLTC.exe .

Load(String, XsltSettings, XmlResolver)

URI에 지정된 XSLT 스타일시트를 로드하고 컴파일합니다. XSLT XmlResolverimport 또는 include 요소를 확인하고 XSLT 설정에 따라 스타일시트에 대한 사용 권한이 결정됩니다.

Load(String)

지정된 URI에 있는 스타일시트를 로드하고 컴파일합니다.

Load(Type)

XSLT 컴파일러(xsltc.exe)를 사용하여 만든 컴파일된 스타일시트를 로드합니다.

Load(XmlReader, XsltSettings, XmlResolver)

에 포함된 XSLT 스타일시트를 XmlReader컴파일합니다. XSLT XmlResolverimport 또는 include 요소를 확인하고 XSLT 설정에 따라 스타일시트에 대한 사용 권한이 결정됩니다.

Load(XmlReader)

에 포함된 스타일시트를 컴파일합니다 XmlReader.

MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
Transform(IXPathNavigable, XmlWriter)

개체에서 지정한 입력 문서를 사용하여 변환을 IXPathNavigable 실행하고 결과를 XmlWriter출력합니다.

Transform(IXPathNavigable, XsltArgumentList, Stream)

개체에서 지정한 입력 문서를 사용하여 변환을 IXPathNavigable 실행하고 결과를 스트림에 출력합니다. 추가 XsltArgumentList 런타임 인수를 제공합니다.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

개체에서 지정한 입력 문서를 사용하여 변환을 IXPathNavigable 실행하고 결과를 TextWriter출력합니다. 추가 XsltArgumentList 런타임 인수를 제공합니다.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

개체에서 지정한 입력 문서를 사용하여 변환을 IXPathNavigable 실행하고 결과를 XmlWriter출력합니다. 추가 XsltArgumentList 런타임 인수를 XmlResolver 제공하고 XSLT document() 함수를 확인합니다.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

개체에서 지정한 입력 문서를 사용하여 변환을 IXPathNavigable 실행하고 결과를 XmlWriter출력합니다. 추가 XsltArgumentList 런타임 인수를 제공합니다.

Transform(String, String)

URI에서 지정한 입력 문서를 사용하여 변환을 실행하고 결과를 파일에 출력합니다.

Transform(String, XmlWriter)

URI에 지정된 입력 문서를 사용하여 변환을 실행하고 결과를 XmlWriter출력합니다.

Transform(String, XsltArgumentList, Stream)

URI에서 지정한 입력 문서를 사용하여 변환을 실행하고 결과를 출력하여 스트리밍합니다. 추가 XsltArgumentList 런타임 인수를 제공합니다.

Transform(String, XsltArgumentList, TextWriter)

URI에 지정된 입력 문서를 사용하여 변환을 실행하고 결과를 TextWriter출력합니다.

Transform(String, XsltArgumentList, XmlWriter)

URI에 지정된 입력 문서를 사용하여 변환을 실행하고 결과를 XmlWriter출력합니다. 추가 XsltArgumentList 런타임 인수를 제공합니다.

Transform(XmlReader, XmlWriter)

개체에서 지정한 입력 문서를 사용하여 변환을 XmlReader 실행하고 결과를 XmlWriter출력합니다.

Transform(XmlReader, XsltArgumentList, Stream)

개체에서 지정한 입력 문서를 사용하여 변환을 XmlReader 실행하고 결과를 스트림에 출력합니다. 추가 XsltArgumentList 런타임 인수를 제공합니다.

Transform(XmlReader, XsltArgumentList, TextWriter)

개체에서 지정한 입력 문서를 사용하여 변환을 XmlReader 실행하고 결과를 TextWriter출력합니다. 추가 XsltArgumentList 런타임 인수를 제공합니다.

Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)

개체에서 지정한 입력 문서를 사용하여 변환을 XmlReader 실행하고 결과를 XmlWriter출력합니다. 추가 XsltArgumentList 런타임 인수를 제공하고 XmlResolver는 XSLT document() 함수를 확인합니다.

Transform(XmlReader, XsltArgumentList, XmlWriter)

개체에서 지정한 입력 문서를 사용하여 변환을 XmlReader 실행하고 결과를 XmlWriter출력합니다. 추가 XsltArgumentList 런타임 인수를 제공합니다.

적용 대상

스레드 보안

개체가 XslCompiledTransform 로드되면 스레드로부터 안전합니다. 즉, 메서드가 Load 성공적으로 완료된 Transform 후 여러 스레드에서 메서드를 동시에 호출할 수 있습니다.

메서드가 Load 다른 스레드에서 호출되는 동안 Transform 한 스레드 XslCompiledTransform 에서 메서드가 다시 호출되면 개체는 이전 상태를 계속 사용하여 호출 실행을 Transform 완료합니다. 메서드가 성공적으로 완료되면 새 상태가 사용됩니다 Load .

Load 메서드는 여러 스레드에서 동시에 호출할 때 스레드로부터 안전하지 않습니다.

추가 정보