2011-09-16 3 views
17

xslt 파일에 javaScript file/libary를 포함/가져올 수있는 방법은 무엇입니까?xslt에 javaScript 파일을 포함하는 방법

+0

좋은 질문, +1. 변환 중에 호출되는 확장 함수 집합으로 자바 스크립트 코드를 사용 하시겠습니까, 아니면 자바 스크립트 파일을 참조하는 HTML 코드를 생성 하시겠습니까, 아니면 둘 다 사용 하시겠습니까? 이 모든 것은 유효하고 의미있는 시나리오입니다. –

답변

19

변환에서 JavaScript를 사용해야하는 경우 (예 : 변형 내에서 호출되는 확장 함수 세트가 포함되어 있음) 자바 스크립트 내용 (적어도 하나의 자바 스크립트 파일)를 별도의 XSLT 스타일 시트 파일에 저장하고 적절한 확장 요소 (예 : <msxml:script>)를 자바 스크립트 코드가 포함 된 텍스트 노드의 부모로 사용합니다.

파일 XSL-JS.xsl :

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
     xmlns:user="http://mycompany.com/mynamespace"> 

<msxsl:script language="JScript" implements-prefix="user"> 
    function xml(nodelist) { 
     return "A B C"; 
    } 
</msxsl:script> 
</xsl:stylesheet> 

파일 XSL 여기

는 Microsoft XSLT 프로세서 (MSXML3/4/6 XslCompiledTransform이나 된 XslTransform)를 사용하여, 매우 간단한 예이고 -Main.xsl 자바 스크립트를 가져 오는 내용 : 변환, 파일에 포함 된

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
     xmlns:user="http://mycompany.com/mynamespace"> 
<xsl:import href="XSL-JS.xsl"/> 

<xsl:template match="/"> 
    <xsl:value-of select="user:xml(.)"/> 
</xsl:template> 

</xsl:stylesheet> 

XSL-Main.xsl이 (무시/사용되지 않음) 어떤 XML 문서에 적용, 원하는 정확한 결과는을 생산 : 당신이 당신 XSLT 응용 프로그램과 함께 생성 할 경우

A B C 

완전히 다른 경우가 있습니다 주어진 자바 스크립트 파일을 참조하는 HTML 파일.

그런 다음 당신은 당신의 XSLT 코드에서이 문제를 포함하고 출력의 일부로서 문자 그대로이 생성 :

<script type="text/javascript" src="SomePath/SomeFileName.js"></script> 
9

당신이 생성 된 HTML 파일에 자바 스크립트 소스를 포함하려는 경우, 스크립트 태그는 방법입니다 . 그러나 태그가 비어 있으면 많은 XSLT 프로세서가 중단됩니다. 모든 것이 잘 보이지만 스크립트 태그를 추가 할 때 빈 출력을 얻는 경우에서와 같이 태그 내에 비 분리 공백을 삽입하십시오 :

<script type="text/javascript" src="SomePath/SomeFileName.js">&#160;</script> 
+0

wow awesome! 고마워, .NET XsltTransform 라이브러리를 사용하여 문제가 발생했습니다. –

관련 문제