<msxsl:script> 요소
_XSLT 변환에 사용자 지정 함수를 사용할 수 있도록 스크립트 블록을 포함합니다. 이 요소는 최상위 요소입니다.
<msxsl:script
language = "language-name"
implements-prefix = "prefix of user's namespace">
</msxsl:script>
특성
language
이 요소 내에 정의된 함수에 사용되는 액티브 스크립팅 언어입니다. 이 언어를 지정하지 않으면 ECMA 262 언어 사양과 호환되는 Microsoft JScript 가 사용됩니다. 이 특성에는 HTML<SCRIPT>
요소의language
특성과 같은 값을 사용할 수 있습니다.관리되는 코드의 경우 CreateProvider에 사용할 수 있는 언어 이름을 이 특성에 사용할 수 있습니다.
- implements-prefix
필수적 요소입니다. 접두사를 스크립트 블록에 연결합니다. 이 특성 값은 네임스페이스를 나타내는 접두사입니다.
요소 정보
발생 횟수 |
제한 없음 |
부모 요소 |
|
자식 요소 |
|
설명
<msxsl:script>
요소는 네임스페이스 urn:schemas-microsoft-com:xslt
에 속합니다. 이 요소 내에서 변수를 선언하고 함수를 정의할 수 있습니다. 이 요소는 <xsl:stylesheet>
요소 내에 나타날 수 있습니다. 그러므로 중첩된 스크립트 블록은 전역 스크립트 블록으로 간주됩니다.
.NET Framework 내에서 관리되는 코드에 대해서만 <msxsl:assembly>
및 <msxsl:using>
자식 요소를 사용할 수 있습니다. 이 요소를 사용할 경우 이 요소는 스크립트 블록 시작 부분에서 모든 스크립트 코드 앞에 있어야 합니다.
비관리 코드에서는 <msxsl:script>
요소에 COM 개체를 인스턴스화할 수도 있습니다. 그러나 사용자의 보안 설정에서 스크립트가 클라이언트 쪽 개체를 인스턴스화하지 못하도록 지정했을 수 있습니다.
스크립트 블록을 사용하면 스크립트 엔진을 여러 번 로드해야 하므로 성능을 향상시키려면 XSLT 파일에서 스크립트 블록을 사용하지 마십시오. 대신 스크립트와 일치하는 COM 개체를 만들어 DLL을 생성합니다. 그런 다음 addObject
를 사용하여 DLL을 전달합니다.
예제
다음 예제에서는 xml()
라는 함수를 선언하는 user
의 네임스페이스 접두사가 있는 스크립트 블록을 <msxsl:script>
를 사용하여 정의하는 방법을 보여 줍니다. xml()
함수는 노드 목록을 인수로 사용합니다. <xsl:value-of>
의 특성에서 select
user
네임스페이스에 있는 xml(nodelist)
함수를 호출하는 방법에 유의해야 합니다.
XML 파일(customers.xml)
XSLT 파일(script.xsl)
출력
다음은 형식이 지정된 출력입니다.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="script.xsl" ?>
<customers>
<customer>
<name>John Smith</name>
<address>123 Elm St.</address>
<phone>(123) 456-7890</phone>
</customer>
<customer>
<name>Mary Jones</name>
<address>456 Oak Ave.</address>
<phone>(156) 789-0123</phone>
</customer>
</customers>
다음은 프로세서 출력입니다.
<?xml version="1.0"?><?xml version="1.0"?><?xml-stylesheet
type="text/xsl" href="script.xsl" ?><customers>
<customer> <name>John Smith</name>
<address>123 Elm St.</address> <phone>(123) 456-
7890</phone> </customer> <customer> <name>Mary
Jones</name> <address>456 Oak Ave.</address>
<phone>(156) 789-0123</phone>
</customer></customers>