2014-01-17 3 views
1

배경템플릿 언어와 면도기 템플릿

내가 필드의 동적 목록 개체 개체를 반환하는 웹 서비스를 가지고있는 네임 스페이스에 대한 액세스를 제한하는 방법에 대해 설명합니다. 현재 웹 서비스는 엔티티를 반환 할 수 있지만 간단하게 만들고 클라이언트가 엔티티를 사용하여 구문 분석 한 템플릿 문자열을 제공하고 결과를 반환 할 수있게하려고합니다. 여기

은 예입니다

var entity = new Entity(); 
entity.Fields.Add("status", "worked"); 
var template = "My template parser {{status}}!"; 
var result = service.ParseTemplate(template, entity); 
// Expected result is "My template parser worked!" 

이 많이 나는 간단한 정규식을 사용 할 수 있습니다. 그런 다음 루프 및 if 문과 같은 기본 논리가 필요하다고 결정했습니다. 나는 위대한 오픈 소스 템플릿 엔진 인 Cottle을 사용하기로 결정했다. 불행히도 내 사업체가 점점 더 복잡 해짐에 따라이를 감축하지 않을 것입니다. 당신이 볼 수 있듯이

var entity = new Entity(); 
entity.Fields.Add("name", "Bob"); 

var entity2 = new Entity(); 
entity2.Fields.Add("status", "worked"); 
entity2.Fields.Add("person", entity); 

var template = "My name is {{person.name}}. My template parser {{status}}!"; 
var result = service.ParseTemplate(template, entity2); 
// Expected result is "My name is Bob. My template parser worked!" 

가, 두 번째 예는 첨부 된 개체를 찾을뿐만 아니라 그것의 필드를 읽을 수있는 점을 기반으로 구문을 할 수 있습니다 : 여기에 내가하고 싶은 물건의 종류입니다. 질문의 고기 위에 지금

...

나는 면도기 내가 RazorEngine 프로젝트를 사용하여 무엇을 찾고 달성 할 수 있다고 결정했다. 그러나 사람들에게 나에게 분명히 이유가있는 서버 측 코드로 채워진 템플릿을 보내도록 초대하는 것을 주저합니다. 전체 .Net 라이브러리에 대한 액세스를 제거하는 동안 템플릿을 구문 분석 할 수있는 방법이 있습니까?

대체 질문

거기에 사람이 추천 할 수있는 더 나은 템플릿 솔루션이 있습니까?

답변

0

견고하고 안전하며 구문 분석 할 XML 문서를 작성하는 것이 이전 접근 방식보다 훨씬 쉽고 유연하므로 결국 XSLT를 사용하게되었습니다.

관련 문제