2012-06-20 2 views
0

XSLT 1.0 및 C# 2.0을 사용하고 있습니다. 로드 된 문서를 캐시하고 싶습니다. 그래서 다음 페이지를 호출 할 때마다 다시로드하는 대신 캐시 문서를 사용해야합니다. 여기 xslt 1.0에서 xml 문서를 캐시하는 방법

내가 PARAM sitespath, 나는 C#을 사용이 문서를 캐시 할 수 있습니다 알고에서의 C#에서 실제 경로를 얻고 XSLT의 일부입니다,하지만 난 XSLT 1.0

샘플에서 캐시를로드 된 문서를 찾고 있어요 코드 :

<xsl:param name="sitespath"/> 
<xsl:variable name="siteInfoPath" select="document($sitespath)/sitedata/region/site/language"/> 

지금 나는 그것이 문서로로드되지 않는 매번 있도록 siteInfoPath 변수를 캐시하려면, 먼저 캐시에서로드 캐시 변수 시도를 확인합니다 그렇지 않으면 다시로드됩니다.

이것이 가능합니까?

주세요.

감사합니다.

답변

0

여러 변환에 대해 xslt에서 document() 함수의 결과를 캐시 할 수 있다고 생각하지 않습니다. document() 함수는 런타임에 평가됩니다. 그러나 C# 프로그램에서 문서를 캐시하고 외부 매개 변수로 변환에 전달해야합니다 (자세한 내용은 XPathNavigator를 전달해야합니다 (XsltArgumentList.AddParam 설명서는 여기 http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addparam.aspx을 참조하십시오).

+0

Thanks Pawel, 실제로 이것은 이미 있지만 다음번 출시 될 예정이지만, 다음에 홍보 할 때까지 약간의 해결책을 찾고있었습니다. xslt 수준에서이 작업을 수행 할 수 있으면 승격을 피할 수 있습니다. –

+0

앞서 말한 것처럼 document() 메서드는 런타임에 평가됩니다. 전역 변수를 사용하여 하나의 변환에 대해 노드를 캐시 할 수 있지만 다중 (및 관련이없는 변환)에는 사용할 수 없습니다. C# 프로그램으로 생각할 수 있습니다. 변수를 5로 설정하고 프로세스를 끝내고 다시 실행하면 변수를 다시 설정하지 않으면 변수가 5가되지 않습니다. – Pawel

관련 문제