문제

XML 객체에서 XSLT 변환을 수행하기 위해 vbscript를 사용하려고합니다.
번역중인 XSL 파일에는 포함됩니다 <xsl:import href="script.xsl"/> 지령. 절대 URL을 사용하는 경우 (http://localhost/mysite/script.xsl), 스타일 시트를 잘 가져옵니다. 그러나 상대 경로를 사용하는 경우 (script.xsl) "자원을 찾을 수 없음"을보고합니다. 이것을 기계 세트 사이에 포트 할 수 있어야하므로 상대 URI를 사용할 수 있어야합니다. 제안이 있습니까?

메모:

  • vbscript 파일이 있습니다 http://localhost/myscript.asp
  • 첫 번째 XSL 파일이 있습니다 http://localhost/mysite/styles.xsl
  • 두 번째 XSL 파일이 있습니다 http://localhost/mysite/script.xsl
  • 상대 경로 사용 mysite/script.xsl 또한 작동하지 않습니다

부록:

여러분의 대답에 감사드립니다. 이 작업을 수행하는 코드를 더 많이 파헤칠수록 낯선 사람입니다. myscript.asp 코드의 다소 특이한 편집입니다. 무슨 일이 일어나는지 styles.xsl HTML 출력에 포함되어 있습니다 myscript.asp XML 청크로 (<xml src=...>) 그리고 그 청크는 클라이언트쪽에 vbscript를 사용하여 스타일 시트로로드됩니다. 이 스타일 시트는 XMLHTTP를 통해 검색되는 XML 청크를 변환하는 데 사용됩니다. 따라서 문제는의 맥락입니다 styles.xsl 클라이언트 측의 HTML이며 어디에 관계가 없습니다. script.xsl 이다.

도움이 되었습니까?

해결책 6

첫번째 시도:

나는 Script.xsl을 다른 XML 청크로 포함시키고 내가 상상할 수있는 모든 방법에서 성공을 거두지 않고 가져 오기 진술을 변경하려고 시도했습니다.

마지막 해결책:

script.xsl을 포함시키기위한 절대 URL이 처음부터 작동 했으므로 최종 솔루션은 스타일을 스타일로 변환하는 것이 었습니다. 이 파일에서는 서버 이름, 프로토콜 및 경로를 검색하여 ASP를 사용하여 가져 오기 명령문에서 올바른 위치로 반영 할 수있었습니다. 그런 다음이 파일이 mysscript.asp에 포함되면 서버의 올바른 절대 URL이 있습니다. 이것은 약간의 해킹이지만 내가이 다소 복잡한 상황을 해결하는 유일한 방법입니다.

다른 팁

XSL의 현재 디렉토리 : import, xsl : include 및 document () 함수는이를 사용하는 변환을 포함하는 디렉토리입니다. 따라서 XSL : 귀하가 사용하고 있다고 말한 Import Directive는 작동해야합니다.

내가 생각할 수있는 유일한 것은 이것에 영향을 줄 수 있습니다. 상대 경로를 사용하는 경우 파일을 파일 시스템에서 직접 읽는 반면 절대 URI를 사용하면 웹 서버에서 검색됩니다. 이 디렉토리에서 스크립트가 파일을 읽지 못하게하는 보안 설정이있을 수 있습니까?

@jon 당신이 매우 가까운 것 같지만 ...해서는 안됩니다 ...

<xsl:import href="/mysite/script.xsl"/>

... 선행 슬래시로?

나는 달리면서 이것을 다룰 것이다 sysinternals 프로세스 모니터. 이 도구가 실행되면 실제로 스크립트가 존재하지 않더라도 어떤 파일을 열려고하는지 확인할 수 있습니다.

상대 경로의 목적 상 "현재 디렉토리"가 XSL 파일이 아닌 ASP 페이지의 위치 일 수 있습니까? 다시 말해서, 당신이 아직하지 않았다면, 당신은 시도 할 수 있습니다.

<xsl:import href="mysite/script.xsl"/>

내가 볼 수없는 라이브러리에서 사용되는 맞춤 URI 레졸버가 있기 때문에 종종이 문제가 발생합니다 (또는 관련 문서를 읽지 않았기 때문에 알지 못합니다.) Saxon/Java World에서는 Custom Uri Resolver가 문서 () 함수뿐만 아니라 포함/가져 오기 명세서에 대한 URI를 해결하려고 시도하는 데 먼저 균열됩니다. URI를 해결할 수 없다면 기본 URI Resolver는 시도해 보며 URI가 절대적 일 때는 일반적으로 놓치지 않습니다.

따라서 ASP 엔진의 앱 컨텍스트를 기반으로 컨텍스트 구동 URI Resolver를 사용하는 것일 수 있습니다.

JS, 이미지 또는 CSS 파일을로드 할 때 승인을 정의하는 변수가 필요합니다.

 <xsl:import href="{$approot}/somedir/script.xsl"/>

또는 XML에 값이있는 경우

 <xsl:import href="{/root/@approot}/somedir/script.xsl"/>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top