XslCompiledTransform 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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 요소에서 |
| TemporaryFiles |
메서드를 TempFileCollection 성공적으로 호출 Load 한 후 디스크에서 생성된 임시 파일이 포함된 파일을 가져옵니다. |
메서드
적용 대상
스레드 보안
개체가 XslCompiledTransform 로드되면 스레드로부터 안전합니다. 즉, 메서드가 Load 성공적으로 완료된 Transform 후 여러 스레드에서 메서드를 동시에 호출할 수 있습니다.
메서드가 Load 다른 스레드에서 호출되는 동안 Transform 한 스레드 XslCompiledTransform 에서 메서드가 다시 호출되면 개체는 이전 상태를 계속 사용하여 호출 실행을 Transform 완료합니다. 메서드가 성공적으로 완료되면 새 상태가 사용됩니다 Load .
Load 메서드는 여러 스레드에서 동시에 호출할 때 스레드로부터 안전하지 않습니다.