XslTransform 클래스

정의

주의

This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202

XSLT(Extensible Stylesheet Language for Transformations) 스타일시트를 사용하여 XML 데이터를 변환합니다.

public ref class XslTransform sealed
public sealed class XslTransform
[System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
type XslTransform = class
[<System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
type XslTransform = class
Public NotInheritable Class XslTransform
상속
XslTransform
특성

설명

메모

XslTransform 클래스는 Microsoft .NET Framework 버전 2.0에서 사용되지 않습니다. XslCompiledTransform 클래스는 새 XSLT 프로세서입니다. 자세한 내용은 XslCompiledTransform 클래스 사용XslTransform 클래스에서 마이그레이션을 참조하세요.

XslTransform 는 XSLT 1.0 구문을 지원합니다. XSLT 스타일시트는 네임스페이스를 http://www.w3.org/1999/XSL/Transform사용해야 합니다.

클래스를 사용하여 스타일시트에 추가 인수를 XsltArgumentList 추가할 수도 있습니다. 이 클래스에는 스타일시트에서 호출할 수 있는 스타일시트 및 확장 개체에 대한 입력 매개 변수가 포함되어 있습니다.

XML 데이터를 변환하려면 다음을 수행합니다.

  1. XslTransform 개체 만들기

  2. 이 메서드를 Load 사용하여 변환에 대한 스타일시트를 로드합니다. 이 메서드에는 여러 오버로드가 있으며 파일 위치와 함께 , XPathNavigator또는 IXPathNavigableURL을 사용하여 XmlReader스타일시트를 로드할 수 있습니다.

  3. 이 메서드를 Transform 사용하여 XML 데이터를 변환합니다. 이 메서드에는 여러 오버로드가 있으며 다양한 유형의 입력 및 출력을 처리할 수 있습니다. 변환 중에 입력으로 사용할 추가 인수를 포함하도록 지정할 XsltArgumentList 수도 있습니다.

보안 고려 사항

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

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

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

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

이러한 보안 문제는 신뢰할 수 없는 원본의 개체, XSLT 스타일시트 또는 XML 원본 데이터를 허용하지 XslTransform 않음으로써 완화할 수 있습니다.

스크립팅 지원

이 클래스는 요소를 사용하여 포함된 스크립팅을 지원합니다 msxsl:script .

.NET Framework 버전 1.1에서 스타일시트에 대한 증거는 포함된 스크립트에 부여되는 권한을 결정합니다.

  • 스타일시트가 URI(Uniform Resource Identifier)에서 로드된 경우 URI를 사용하여 증명 정보를 만듭니다. 이 증거에는 해당 사이트 및 영역과 함께 URI가 포함됩니다.

  • 스타일시트가 다른 원본을 사용하여 로드된 경우 메서드에 개체 LoadSystem.Security.Policy.Evidence 전달하여 증거를 제공할 수 있습니다. 그렇지 않으면 스크립트 어셈블리에 완전 신뢰가 있습니다.

반 신뢰할 수 있는 호출자: UnmanagedCode 포함된 스크립트를 컴파일하려면 권한이 필요합니다. ControlEvidence 메서드를 제공 EvidenceLoad 하려면 권한이 필요합니다. 호출자에게 필요한 권한이 없는 경우 A SecurityException 가 throw됩니다. 자세한 내용은 참조 System.Security.Permissions.SecurityPermission 하세요 System.Security.Permissions.SecurityPermissionFlag .

요소 msxsl:script 에는 다음과 같은 요구 사항이 있습니다.

  • 요소는 msxsl:script 네임스페이스에 urn:schemas-microsoft-com:xslt 속합니다. 스타일시트에 네임스페이스 선언 xmlns:msxsl=urn:schemas-microsoft-com:xslt이 포함되어야 합니다.

  • 요소에는 msxsl:script 사용할 스크립팅 언어를 지정하는 특성이 포함될 language 수 있습니다. 특성 값 language 은 C#, CSharp, VB, VisualBasic, JScript 또는 JavaScript 중 하나여야 합니다. 언어 이름은 대/소문자를 구분하지 않으므로 JavaScript와 javascript는 모두 유효합니다. language 특성을 지정하지 않으면 기본적으로 JScript로 설정됩니다.

  • 요소에는 msxsl:script 스크립트 블록과 연결된 네임스페이스를 나타내는 접두사를 포함하는 특성이 포함되어 implements-prefix 야 합니다. 이 네임스페이스는 스타일시트 내에서 정의해야 합니다. 스타일시트에는 네임스페이스별로 그룹화된 여러 스크립트 블록이 포함될 수 있습니다. 동일한 네임스페이스 내에 여러 언어가 있는 스크립트 블록을 가질 수 없습니다. 스크립트 블록이 동일한 네임스페이스 내에 있는 경우 스크립트 블록은 다른 스크립트 블록에 정의된 함수를 호출할 수 있습니다. 스크립트 블록의 내용은 스크립팅 언어의 규칙 및 구문에 따라 구문 분석됩니다(특성에서 language 제공). 예를 들어 C# 스크립트 블록이 있는 경우 주석 앞에 문자가 // 추가됩니다. 주석은 유효한 XML 콘텐츠여야 합니다.

메모

CDATA 섹션에서 스크립트 블록을 래핑하는 것이 좋습니다.

<msxsl:script implements-prefix='xy' language='C#'>  
 <![CDATA[  
 // Add code here.  
 ]]>
</msxsl:script>  

함수는 요소 내에서 msxsl:script 선언할 수 있습니다. 다음 표에서는 기본적으로 지원되는 네임스페이스를 보여 줍니다.

지원되는 네임스페이스 Description
System 시스템 클래스.
System.Collection 컬렉션 클래스입니다.
System.Text 텍스트 처리 클래스입니다.
System.Xml 핵심 XML 클래스입니다.
System.Xml.Xsl XSLT 클래스입니다.
System.Xml.XPath XPath(XML Path Language) 클래스입니다.

스크립트 함수에서 정의한 제공된 인수 및 반환 값은 아래에 나열된 W3C(World Wide Web 컨소시엄) 형식 중 하나여야 합니다. 다음 표에서는 W3C 형식(XPath 또는 XSLT) 및 해당 .NET Framework 클래스 간의 매핑에 대해 자세히 설명합니다.

W3C 형식 동등한 .NET 클래스
문자열(XPath) System.String
부울(XPath) System.Boolean
Number(XPath) System.Double
결과 트리 조각(XSLT) System.Xml.XPath.XPathNavigator
노드 집합(XPath) System.Xml.XPath.XPathNodeIterator

스크립트 함수가 Int16, UInt16, Int32, UInt32, Int64, UInt64, Single 또는 Decimal 숫자 형식 중 하나를 사용하는 경우 이러한 형식은 W3C XPath 형식 번호에 매핑되는 Double으로 강제 변환됩니다.

인수 결과를 필수 형식 중 하나로 변환할 수 없는 함수가 호출될 때 예외가 throw됩니다.

메모

msxsl:script 클래스 msxsl:node-list 에서 urn:schemas-microsoft-com:xslt 지원하는 XslTransform 네임스페이스의 유일한 함수입니다.

XslTransform 에는 CLR(공용 언어 런타임) 코드를 확장 메커니즘으로 활용하는 기능이 있습니다. 이 작업은 클래스의 인스턴스를 클래스에 XslTransform 전달하고 XSLT 스타일시트 내에서 해당 공용 메서드를 호출하여 수행됩니다. 지정되지 않은 개수의 매개 변수를 전달할 수 있는 키워드로 정의된 params 메서드는 이 시나리오에서 제대로 작동하지 않습니다. 자세한 내용은 매개 변수를 참조하세요.

자세한 내용은 XslTransform 클래스를 사용한 XSLT 변환을 참조하세요.

생성자

Name Description
XslTransform()
사용되지 않음.

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

속성

Name Description
XmlResolver
사용되지 않음.

메서드가 XmlResolver 호출될 때 Transform 외부 리소스를 확인하는 데 사용되는 값을 설정합니다.

메서드

Name Description
Equals(Object)
사용되지 않음.

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

(다음에서 상속됨 Object)
GetHashCode()
사용되지 않음.

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

(다음에서 상속됨 Object)
GetType()
사용되지 않음.

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

(다음에서 상속됨 Object)
Load(IXPathNavigable, XmlResolver, Evidence)
사용되지 않음.

에 포함된 XSLT 스타일시트를 IXPathNavigable로드합니다. 이 메서드를 사용하면 증명 정보를 지정하여 스타일시트 사용 권한을 제한할 수 있습니다.

Load(IXPathNavigable, XmlResolver)
사용되지 않음.

에 포함된 XSLT 스타일시트를 IXPathNavigable로드합니다.

Load(IXPathNavigable)
사용되지 않음.

에 포함된 XSLT 스타일시트를 IXPathNavigable로드합니다.

Load(String, XmlResolver)
사용되지 않음.

URL로 지정된 XSLT 스타일시트를 로드합니다.

Load(String)
사용되지 않음.

URL로 지정된 XSLT 스타일시트를 로드합니다.

Load(XmlReader, XmlResolver, Evidence)
사용되지 않음.

에 포함된 XSLT 스타일시트를 XmlReader로드합니다. 이 메서드를 사용하면 증명 정보를 지정하여 스타일시트 사용 권한을 제한할 수 있습니다.

Load(XmlReader, XmlResolver)
사용되지 않음.

에 포함된 XSLT 스타일시트를 XmlReader로드합니다.

Load(XmlReader)
사용되지 않음.

에 포함된 XSLT 스타일시트를 XmlReader로드합니다.

Load(XPathNavigator, XmlResolver, Evidence)
사용되지 않음.

에 포함된 XSLT 스타일시트를 XPathNavigator로드합니다. 이 메서드를 사용하면 증명 정보를 지정하여 스타일시트 사용 권한을 제한할 수 있습니다.

Load(XPathNavigator, XmlResolver)
사용되지 않음.

에 포함된 XSLT 스타일시트를 XPathNavigator로드합니다.

Load(XPathNavigator)
사용되지 않음.

에 포함된 XSLT 스타일시트를 XPathNavigator로드합니다.

MemberwiseClone()
사용되지 않음.

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

(다음에서 상속됨 Object)
ToString()
사용되지 않음.

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

(다음에서 상속됨 Object)
Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)
사용되지 않음.

지정된 IXPathNavigable 값을 사용하여 XML 데이터를 args 변환하고 결과를 .에 Stream출력합니다.

Transform(IXPathNavigable, XsltArgumentList, Stream)
사용되지 않음.

지정된 IXPathNavigable 값을 사용하여 XML 데이터를 args 변환하고 결과를 .에 Stream출력합니다.

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)
사용되지 않음.

지정된 IXPathNavigable 값을 사용하여 XML 데이터를 args 변환하고 결과를 .에 TextWriter출력합니다.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
사용되지 않음.

지정된 IXPathNavigable 값을 사용하여 XML 데이터를 args 변환하고 결과를 .에 TextWriter출력합니다.

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)
사용되지 않음.

지정된 값을 사용하여 XML 데이터를 변환하고 결과를 />에 출력합니다.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)
사용되지 않음.

지정된 값을 사용하여 XML 데이터를 변환하고 결과를 />에 출력합니다.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
사용되지 않음.

지정된 값을 사용하여 XML 데이터를 변환하고 결과를 />에 출력합니다.

Transform(IXPathNavigable, XsltArgumentList)
사용되지 않음.

지정된 값을 사용하여 XML 데이터를 변환하고 결과를 />에 출력합니다.

Transform(String, String, XmlResolver)
사용되지 않음.

입력 파일의 XML 데이터를 변환하고 결과를 출력 파일로 출력합니다.

Transform(String, String)
사용되지 않음.

입력 파일의 XML 데이터를 변환하고 결과를 출력 파일로 출력합니다.

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)
사용되지 않음.

지정된 XPathNavigator 값을 사용하여 XML 데이터를 args 변환하고 결과를 .에 Stream출력합니다.

Transform(XPathNavigator, XsltArgumentList, Stream)
사용되지 않음.

지정된 XPathNavigator 값을 사용하여 XML 데이터를 args 변환하고 결과를 .에 Stream출력합니다.

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)
사용되지 않음.

지정된 XPathNavigator 값을 사용하여 XML 데이터를 args 변환하고 결과를 .에 TextWriter출력합니다.

Transform(XPathNavigator, XsltArgumentList, TextWriter)
사용되지 않음.

지정된 XPathNavigator 값을 사용하여 XML 데이터를 args 변환하고 결과를 .에 TextWriter출력합니다.

Transform(XPathNavigator, XsltArgumentList, XmlResolver)
사용되지 않음.

지정된 값을 사용하여 XML 데이터를 변환하고 결과를 />에 출력합니다.

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)
사용되지 않음.

지정된 인수를 사용하여 XML 데이터를 XPathNavigator 변환하고 결과를 XmlWriter.에 출력합니다.

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
사용되지 않음.

지정된 인수를 사용하여 XML 데이터를 XPathNavigator 변환하고 결과를 XmlWriter.에 출력합니다.

Transform(XPathNavigator, XsltArgumentList)
사용되지 않음.

지정된 값을 사용하여 XML 데이터를 변환하고 결과를 />에 출력합니다.

적용 대상

스레드 보안

XslTransform 개체는 변환 작업에 스레드로부터만 안전합니다. 다른 작업은 스레드로부터 안전한 것으로 보장되지 않습니다. 로드 작업 중에 개체에 다른 메서드가 호출되지 않도록 해야 합니다.