2009-11-10 2 views
0

동적 XSL : \ 템플릿 \ 테스트 \의 file.pdf내가 3 개 XSL의 C 같은 그들에 경로를 가진 파일이 파일

이 경로는 항상 동일하고 될 수 없습니다 오히려 하드를하는 것보다 XSL로 코딩되어 있으므로 C : \ templates \ test \ 경로가 태그 [BASEPATH]로 바뀌었고 XSLTransform 객체로 xsl 파일을 읽을 때 (예, 사용되지 않았 음을 알고 있습니다. 같은 시간에 XSLCompiledTransform으로 옮길 수 있습니다.), 웹 폴더 (또는 Server.MapPath ("~")의 절대 파일 경로로 바꿀 태그 [BASEPATH]를 원합니다.)

나는 XSL 파일의 이름을 취하는 XSLLoader aspx 페이지를 만들 수있을 것이라고 생각했다. 그리고 나서 xml content-type을 통해 XSL 파일을 반환합니다. 내가 이걸 시도 할 때 XSLTransform.Load 메서드에 이렇게 URL을 전달할 수 있는지 잘 모르겠지만 503 오류가 발생합니다.

어떤 아이디어가 필요합니까?

+0

XSL-FO와 관련된 것은 무엇입니까? – Boldewyn

+0

XSL의 일부입니다 (XSL의 일부입니다.) - 그 용도는 XSL의 일부입니다 (예 : PDF를 만드십시오. 상대 경로를 사용하여 XSL-FO에서 외부 그래픽을 지정하는 방법이 있는지 모릅니다. – Graeme

답변

1

XSL 매개 변수를 보았습니까?

<xsl:param name="basepath" select="'C:\Users\Graeme\'" /> 

<xsl:value-of select="document(concat($basepath, 'test.pdf'))" /> 

그런 다음 대부분의 알맞은 XSLT 엔진에는 외부에서 루트 수준 매개 변수를 설정하는 방법이 있습니다.

+0

고마워, 그 방법은 내가 갔어 - 지금 사용되는 변수를 가지고 그냥 C#에서 루트 수준의 매개 변수를 설정하는 방법을 알아낼 필요합니다. – Graeme

+0

좋습니다. C#의 인수를 사용되지 않는 XslTransform 객체에 전달하려면 다음과 같이하십시오. XsltArgumentList xslArg = new XsltArgumentList(); xslArg.AddParam ("day", "", day); xslArg.AddParam ("year", "", year); xslArg.AddParam ("weather", "", weather); XslTransform xslt = new XslTransform(); xslt.Load (stylesheet); XPathDocument xpathdocument = new XPathDocument (filename); XmlTextWriter writer = new XmlTextWriter ("priceClassExample.html", null); xslt.Transform (xpathdocument, xslArg, writer); writer.Close(); – Graeme