2013-09-28 2 views
4

을 제거하기 위해 HTML 템플릿을 enlive의 복제-에를 사용합니다. 예를 들어, 어쩌면 시도어떻게 더미 자식 요소

<ul> 
    <li>real</li> 
    <li>data</li> 
    <li>here</li> 
    <li>wurdz</li> 
</ul> 

순진 것은

(defsnippet my-snippet "my-template.html" [:ul] [items] 
    [[:li first-of-type]] (clone-for [ii items] 
          [:li] (content ii))) 

하지만 같은 것입니다, 템플릿은 다음과 같습니다,

<ul> 
    <li>foo</li> 
    <li>bar</li> 
    <li>baz</li> 
</ul> 

그리고 우리는이 같은 HTML을 생성 할 더미 데이터로 두 번째 요소부터 n 번째 요소까지 남겨 둡니다. 어떻게 모든 더미 요소를 제거하고 실제 요소로 대체 ​​할 수 있습니까?

답변

5

내가 사용하고이 솔루션은 모든 더미 노드를 삭제 어느

(defsnippet my-snippet "my-template.html" [:ul] [items] 
    [[:li (html/but html/first-of-type)]] nil 
    [[:li html/first-of-type]] (html/clone-for [ii items] ...)) 

, 그런 짓을하는 것입니다, 그리고 내 콘텐츠로 새로 삽입합니다.

(defsnippet my-snippet "my-template.html" [:ul [:li (nth-of-type 1)]] [items] 
    [:li] (clone-for [ii items] 
     [:li] (content ii))) 

(deftemplate my-template "my-template.html" 
    [items] 
    [:ul] (content (my-snippet items))) 

먼저, 당신은 당신이 실제 데이터를 복제 할 특정 요소와 조각을 정의, 당신은 템플릿을 정의하고 교체 할 수 있습니다 :

4

나는 다른 접근 방식이 같은이 될 수 있다고 생각 스 니펫을 넣을 요소의 내용. 이렇게하면 더미 노드를 삭제할 필요가 없습니다.