XslTransform 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
주의
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 데이터를 변환하려면 다음을 수행합니다.
XslTransform 개체 만들기
이 메서드를 Load 사용하여 변환에 대한 스타일시트를 로드합니다. 이 메서드에는 여러 오버로드가 있으며 파일 위치와 함께 , XPathNavigator또는 IXPathNavigableURL을 사용하여 XmlReader스타일시트를 로드할 수 있습니다.
이 메서드를 Transform 사용하여 XML 데이터를 변환합니다. 이 메서드에는 여러 오버로드가 있으며 다양한 유형의 입력 및 출력을 처리할 수 있습니다. 변환 중에 입력으로 사용할 추가 인수를 포함하도록 지정할 XsltArgumentList 수도 있습니다.
보안 고려 사항
클래스를 사용하는 애플리케이션을 XslTransform 만들 때 다음 항목과 해당 의미를 알고 있어야 합니다.
확장 개체는 기본적으로 사용하도록 설정됩니다. XsltArgumentList 확장 개체를 포함하는 객체가 Transform 메서드에 전달되면, 이러한 객체가 활용됩니다.
XSLT 스타일시트에는 다른 파일 및 포함된 스크립트 블록에 대한 참조가 포함될 수 있습니다. 악의적인 사용자는 실행 시 컴퓨터가 리소스에서 부족해질 때까지 시스템이 처리되도록 하는 데이터 또는 스타일시트를 제공하여 이를 악용할 수 있습니다.
혼합 신뢰 환경에서 실행되는 XSLT 애플리케이션은 스타일시트 스푸핑이 발생할 수 있습니다. 예를 들어 악의적인 사용자는 유해한 스타일시트를 사용하여 개체를 로드하고 나중에 메서드를 호출 Transform 하고 변환을 실행하는 다른 사용자에게 전달할 수 있습니다.
이러한 보안 문제는 신뢰할 수 없는 원본의 개체, XSLT 스타일시트 또는 XML 원본 데이터를 허용하지 XslTransform 않음으로써 완화할 수 있습니다.
스크립팅 지원
이 클래스는 요소를 사용하여 포함된 스크립팅을 지원합니다 msxsl:script .
.NET Framework 버전 1.1에서 스타일시트에 대한 증거는 포함된 스크립트에 부여되는 권한을 결정합니다.
스타일시트가 URI(Uniform Resource Identifier)에서 로드된 경우 URI를 사용하여 증명 정보를 만듭니다. 이 증거에는 해당 사이트 및 영역과 함께 URI가 포함됩니다.
스타일시트가 다른 원본을 사용하여 로드된 경우 메서드에 개체 Load 를 System.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 외부 리소스를 확인하는 데 사용되는 값을 설정합니다. |
메서드
적용 대상
스레드 보안
XslTransform 개체는 변환 작업에 스레드로부터만 안전합니다. 다른 작업은 스레드로부터 안전한 것으로 보장되지 않습니다. 로드 작업 중에 개체에 다른 메서드가 호출되지 않도록 해야 합니다.