2009-10-22 2 views
0

XSLT로 작업 한 사람이 누구에게 도움이 될 수 있습니까?각각에 대해 xsl :에 매개 변수 값 할당

저는 XSL 버전 1.0을 사용하고 있습니다.

<xsl:param name="HDISageHelpPath"/> 

가 지금은 ASP 페이지에서이 매개 변수에 값을 할당하고 있습니다 :

내가 좋아하는 XSL 파일에 매개 변수를 선언했다. 내가 지정하는 값은 "document('../ChannelData/Sage/help/ic/xml/HDI.xml')/HelpFiles/Help"입니다. 지금은 (이 작동하지 않습니다)

<xsl:for-each select="msxsl:node-set($HDISageHelpPath)" >

같은 <xsl for each>이 매개 변수를 지정할 그러나 그것은 작동하지 않습니다. 다음과 같이 디버깅하여 매개 변수 값을 확인했습니다.

<debug tree="$HDISageHelpPath"> 
    <xsl:copy-of select="$HDISageHelpPath"/> 
</debug> 

값을 인쇄 할 수 있으며 올바른 것으로 보입니다. 사실 나는 그것이

<xsl:for-each select="document('../ChannelData/Sage/help/ic/xml/HDI.xml')/HelpFiles/Help"> (This works) 

사람이 작동하지 않습니다 xsl:for-each에 매개 변수를 할당하는 이유를 알려 주시기 바랍니다 수있는 작동을 하드 코딩에 의한 정적 경로 ("document('../ChannelData/Sage/help/ic/xml/HDI.xml')/HelpFiles/Help")를 할당 할 때?

참고 : 나는 사이트 "http://www.dpawson.co.uk/xsl/sect2/N1553.html"

답변

0

쉽게 XSLT 1.0 XPath 식 동적 문자열을 평가할 수 없습니다를 언급했다. 일반적으로 하드 코딩해야합니다.

EXSLT's dyn:evaluate()이 있지만 MXSML 프로세서와 함께 사용할 수 있을지는 의문입니다.

다른 방법으로, 당신은 단지 파일 경로를 통과 시도 할 수 중 하나

<xsl:param name="HDISageHelpFilePath"/> 
<!-- ... --> 
<xsl:for-each select="document($HDISageHelpFilePath)/HelpFiles/Help"> 
</xsl:for-each> 

또는로 대체, 자리를 만들어 검색 및 바꾸기는 프로세서에 실제 XSL 코드를로드하기 전에 (로 문자열). 이것은 다소 엉망이고 오류가 발생하기 쉽지만 실제로 동적 인 XPath 표현식을 사용할 수 있습니다.

<xsl:for-each select="%HELP_FILE_XPATH%"> 
</xsl:for-each> 

로드 텍스트로 파일, 실제 XPath를 함께 %HELP_FILE_XPATH%을 대체 프로세서에 공급. 로드가되면 괜찮습니다. 그렇지 않으면 입력 한 XPath의 형식이 잘못되었습니다.

+0

안녕하세요 Tomalak, 먼저 답장을 보내 주셔서 감사합니다. 다음 나는 당신의 첫 번째 옵션을 사용하여 시도하지만 불행하게도이 일을하지 않았고 아래의 오류 준 : 오류 유형 : MSXML3.DLL (0X80004005) 변수 또는 매개 변수 'HDISageHelpFilePath'에 대한 참조를 확인할 수 없습니다. 변수 또는 매개 변수가 정의되지 않았거나 범위 내에 있지 않을 수 있습니다. – Varun

+0

두 번째 옵션에 관해서, 저는 방금 xsl에 대한 작업을 시작 했으므로 무엇을 말하고 있는지 확실하지 않습니다. 우리가 당신을 더 잘 이해할 수 있도록 개인 이메일 ID로 말할 수 있다면 더 좋을 것입니다 ... 나는 에 접속 중입니다. [email protected] doharey_varun @ hotmail.com Varun Doharey – Varun

+0

매개 변수 이름을 ''HDISageHelpPath ''에서 ''HDISageHelpFilePath ''로 변경하여 파일 경로가 아니라 XPath가 아닌 것을 강조했습니다. 누락되었을 수 있습니다. – Tomalak

관련 문제