gen_rule_content_list(Stream,Rule,CounterEx,SuccessMsg,UncheckedMsg,FailDep,NotExecDep) :-
        length(CounterEx,CELen),
        length(SuccessMsg,SMLen),
        length(UncheckedMsg,UCLen),
        length(FailDep,FDLen),
        length(NotExecDep,NEDLen),
        ((CELen > 0 ; SMLen > 0 ; UCLen > 0 ; FDLen > 0 ; NEDLen > 0) % create tag only if at least one child exists
          -> format(Stream,'        <div class="rule-content" id="~w">~n',[Rule]),
             (CELen > 0
               -> format(Stream,'            <b>~w</b> Violations found:~n',[CELen]),
                  format(Stream,'            <ul>~n',[]),
                  forall(member(CE,CounterEx),gen_rule_content_list_aux(Stream,CE)),
                  format(Stream,'            </ul>~n',[])
                ; true
             ),
             (SMLen > 0
               -> format(Stream,'            <b>~w</b> successful checks:~n',[SMLen]),
                  format(Stream,'            <ul>~n',[]),
                  forall(member(SM,SuccessMsg),gen_rule_content_list_aux(Stream,SM)),
                  format(Stream,'            </ul>~n',[])
                ; true
             ),
             (UCLen > 0
               -> format(Stream,'            <b>~w</b> unchecked items:~n',[UCLen]),
                  format(Stream,'            <ul>~n',[]),
                  forall(member(UC,UncheckedMsg),gen_rule_content_list_aux(Stream,UC)),
                  format(Stream,'            </ul>~n',[])
                ; true
             ),
             (FDLen > 0
               -> format(Stream,'            Rule could not be checked due to ~w failed dependencies:~n',[FDLen]),
                  format(Stream,'            <ul>~n',[]),
                  forall(member(FD,FailDep),gen_rule_content_list_aux(Stream,FD)),
                  format(Stream,'            </ul>~n',[])
                ; true
             ),
             (NEDLen > 0
               -> format(Stream,'            Rule could not be checked due to ~w unchecked dependencies:~n',[NEDLen]),
                  format(Stream,'            <ul>~n',[]),
                  forall(member(NED,NotExecDep),gen_rule_content_list_aux(Stream,NED)),
                  format(Stream,'            </ul>~n',[])
                ; true
             ),
             format(Stream,'        </div>~n',[])
           ; true),
        fail.
 gen_rule_content_list(_,_,_,_,_,_,_).