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
특성

예제

다음 예제에서는 지정된 XML 문서를 변환하고 결과를 콘솔에 출력합니다.

//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);

//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);
'Create a new XslTransform object.
Dim xslt As New XslTransform()

'Load the stylesheet.
xslt.Load(CType("http://server/favorite.xsl", String))

'Create a new XPathDocument and load the XML data to be transformed.
Dim mydata As New XPathDocument("inputdata.xml")

'Create an XmlTextWriter which outputs to the console.
Dim writer As New XmlTextWriter(Console.Out)

'Transform the data and send the output to the console.
xslt.Transform(mydata, Nothing, writer, Nothing)

설명

참고

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 사용하여 변환에 대한 스타일시트를 로드합니다. This method has several overloads and can load a style sheet using an XmlReader, XPathNavigator, IXPathNavigable, or a URL with the location of the file.

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

Security Considerations

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 메서드를 제공 Evidence Load 하려면 권한이 필요합니다. 호출자에게 필요한 권한이 없는 경우 A SecurityException 가 throw됩니다. 자세한 내용은 System.Security.Permissions.SecurityPermissionSystem.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 Collection 클래스
System.Text 텍스트 처리 클래스입니다.
System.Xml 핵심 XML 클래스
System.Xml.Xsl XSLT 클래스
System.Xml.XPath XPath(XML Path Language) 클래스

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

W3C 형식 동등한 .NET 클래스
String(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:scriptmsxsl:node-list 클래스에서 urn:schemas-microsoft-com:xslt 지원하는 XslTransform 네임스페이스의 유일한 함수입니다.

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

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

생성자

XslTransform()

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

속성

XmlResolver
사용되지 않습니다.

XmlResolver 메서드를 호출할 때 외부 리소스를 확인하기 위해 사용하는 Transform를 설정합니다.

메서드

Equals(Object)

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

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

기본 해시 함수로 작동합니다.

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

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

(다음에서 상속됨 Object)
Load(IXPathNavigable)
사용되지 않습니다.

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

Load(IXPathNavigable, XmlResolver)
사용되지 않습니다.

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

Load(IXPathNavigable, XmlResolver, Evidence)

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

Load(String)

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

Load(String, XmlResolver)

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

Load(XmlReader)
사용되지 않습니다.

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

Load(XmlReader, XmlResolver)
사용되지 않습니다.

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

Load(XmlReader, XmlResolver, Evidence)

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

Load(XPathNavigator)
사용되지 않습니다.

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

Load(XPathNavigator, XmlResolver)
사용되지 않습니다.

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

Load(XPathNavigator, XmlResolver, Evidence)

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

MemberwiseClone()

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

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

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

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

지정된 args를 사용하여 IXPathNavigable의 XML 데이터를 변환하고 그 결과를 XmlReader로 출력합니다.

Transform(IXPathNavigable, XsltArgumentList, Stream)
사용되지 않습니다.

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

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

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

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
사용되지 않습니다.

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

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

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

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

지정된 args를 사용하여 IXPathNavigable의 XML 데이터를 변환하고 그 결과를 XmlReader로 출력합니다.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
사용되지 않습니다.

지정된 args를 사용하여 IXPathNavigable의 XML 데이터를 변환하고 그 결과를 XmlWriter로 출력합니다.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

지정된 args를 사용하여 IXPathNavigable의 XML 데이터를 변환하고 그 결과를 XmlWriter로 출력합니다.

Transform(String, String)
사용되지 않습니다.

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

Transform(String, String, XmlResolver)

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

Transform(XPathNavigator, XsltArgumentList)
사용되지 않습니다.

지정된 args를 사용하여 XPathNavigator의 XML 데이터를 변환하고 그 결과를 XmlReader로 출력합니다.

Transform(XPathNavigator, XsltArgumentList, Stream)
사용되지 않습니다.

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

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

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

Transform(XPathNavigator, XsltArgumentList, TextWriter)
사용되지 않습니다.

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

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

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

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

지정된 args를 사용하여 XPathNavigator의 XML 데이터를 변환하고 그 결과를 XmlReader로 출력합니다.

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
사용되지 않습니다.

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

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

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

적용 대상

스레드 보안

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