2012-05-14 2 views
0

매개 변수 $ test가 있으면 XPATH를 사용하여 해결할 수 있습니다. ' 나는 ALtova Stylevision에서 XPATH 빌더를 사용하고 난 exists ($blah) 또는 exists (string($blah)) 같은 것을 사용 수 있다고 생각하지만이 문제는 때때로 매개 변수가 존재한다는 것입니다XSLT를 사용하기 전에 매개 변수가 있는지 확인하십시오.

" Undefined variable in expression test="exists( string($blah) )""

로 끝나는, 때로는 원 티. 빈 매개 변수에 하드 코드를 넣고 싶지 않습니다!

사용하기 전에 "매개 변수 XXXX가 존재하는지 확인"할 수있는 방법이 있습니까? 내가

매개 변수가 정의 된 거의 모든 다른 프로그래밍 언어에서이 작업을 수행하는 방법을 알고는 실망 :

<xsl:param name="blah"> some text </xsl:param>

이 매개 변수는 별도의 파일 "parameters.xslt"에서 읽습니다. 이 파일은 시나리오에 따라 존재할 수도 있고 존재하지 않을 수도 있습니다. 내가 그것을 사용하려고 시도하기 전에 실제로 param을 확인해야합니다.

답변

1

매개 변수를 선언했다면 존재합니다. 당신이 알고 싶은 것은 당신이 다음 XSLT를 작성하는 경우가 선언 된 어떤 변수 알 것으로 예상된다, 기본적으로, does it have a value?

<xsl:choose> 
    <xsl:when test="not($blah)">$blah wasn’t passed in</xsl:when> 
    <xsl:otherwise>$blah was passed in</xsl:otherwise> 
</xsl:choose> 
+0

매개 변수 파일 "Parameters.xslt"에서 매개 변수를 끌어 놓는 것이 문제입니다. 때로는 시나리오에 따라이 파일이 필요하지 않습니다. 그래서 내가해야 할 일은 매개 변수가 실제로 존재하는지/만들어 졌는지 확인하는 것입니다 .9이게 가능합니까?) 더하기 측면에서, "NOT()"매개 변수가있는 경우에는 정상적으로 작동합니다. – JustAnotherDeveloper

+1

Ah. 아닙니다. 매개 변수가 있는지 여부를 모른 채 매개 변수를 확인하는 방법이 있다고 생각하지 않습니다. 조건부로 ''또는 ''를 추가하고 있습니까? 그렇다면, Parameters.xslt가 포함되어있을 때''와 같은 것을 포함하는 것은 어떨까요,''그렇지 않다면? –

+0

그리고 "조건부 추가"라고 말하면, 스타일 시트를 생성 할 때 * 발생해야한다는 것을 의미합니다. 왜냐하면'import' /'include'는'stylesheet'의 직접적인 자식 일 뿐이므로'if'와 같은 것이 아닙니다. –

1

입니다. 스타일 시트의 다른 모듈을 작성하는 사람들이 서로의 코드에 대한 지식이 충분하지 않은 개발 모델을 사용하려고 노력 중이며 XSLT는 해당 모델에서 작동하도록 설계되지 않았습니다.

XSLT는 거의 고유하지 않습니다. 메소드의 작성자가 "호출자가 제공 한 인수의 수"를 묻는 Java 메소드에서 아무것도 찾을 수 없습니다. 불충분 한 인수가 제공되면 코드는 컴파일되지 않습니다.

관련 문제