2012-07-24 2 views
0

내 프리 마커 템플릿 중 하나에서 나는 그래서 지금, 내 대상 목록이이 값이 포함이프리 마커 수송 목록

<#macro RepeatTwice><#nested 1><#nested 2></#macro> 

<#macro Destinations> 
<#assign DestinationList = []> 
<@RepeatTwice ; Index> 
<#assign City == some XPath expression dependant on the index> 
<#if City == something> 
<#assign DestinationList = DestinationList + ["some string"]> 
<#elseif City == something else> 
<#assign DestinationList = DestinationList + ["some string"]> 
</#if> 
</@> 
</#macro> 

처럼 보일 매크로 한 쌍을 가지고있다. 이것은 ${DestinationList[0]} 또는 ${DestinationList[1]}</#macro> 앞에 삽입하면 예상되는 결과가 나옵니다.

내 질문은 --- 별도의 템플릿으로이 매크로에서 전체 목록을 캡처하여 필요할 때 그 요소에 액세스 할 수 있습니다.

이 경우 매크로가 필요한 요소가 아니라 전체 목록을 반환해야합니다.

그러나 ${DestinationList}을 삽입하거나 DestinationList 만 삽입하면 오류가 반환됩니다.

나는 ${DestinationList[0,1]}과 같은 일을 시도했지만 아무것도 작동하지 않는 것 같습니다.

이것이 가능합니까?

감사

답변

0

매크로 (및 지시자) 값을 계산하여 출력으로 인쇄 (및 어떤 다른 부작용을 가지고) 아니다. 여기서 함수를 정의해야합니다. #macro 대신 #function을 사용하면 #return을 사용하여 목록과 같은 값을 반환 할 수 있습니다.

또한 ${expression}은 항상 값을 문자열로 변환하므로 오류가 발생합니다.

+0

감사합니다. –

관련 문제