| 
		
			Сообщение от tenshi
			
		
	 | 
	| 
		что же это за волшебное средство?
	 | 
	
Ты не поверишь, XSLT.
	
	| 
		
			Сообщение от tenshi
			
		
	 | 
	| 
		модель представления вернёт вью ориентированные данные
	 | 
	
Привет, копипаста моделей.
	
	| 
		
			Сообщение от tenshi
			
		
	 | 
	| 
		Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds.
	 | 
	
Охх... Ну смотри:
<?xml version="1.0" encoding="UTF-8"?>
<ten:root xmlns:ten="TEN" xmlns="http://www.w3.org/1999/xhtml">
  
  <!-- Один шаблон для списка пользователей, может лежать в отдельном файле -->
  <ten:block name="user-list">
    <ul>
      <ten:each array="this" item="user">
        <li><ten:echo data="user.name" /></li>
      </ten:each>
    </ul>
  </ten:block>
  
  <!-- Одна выборка всех пользователей. Если бы нам потребовались только совершеннолетние, в методе getUsers можно реализовать параметры fromAge и toAge. Пример приводить не буду -->
  <ten:async method="getUsers" arguments="userList">
    <ten:context object="new Collection(userList)">
      <!-- Первый список, первая фильтрация -->
      <ten:render block="user-list" context="this.get(':el.age < 18')" />
      <!-- Второй список, вторая фильтрация -->
      <ten:render block="user-list" context="this.get(':el.age >= 18')" />
    </ten:context>
  </ten:async>
</ten:root>
Ну и сама разметка списка может быть кастомизирована для каждого конкретного случая.
В итоге:
	
	| 
		
			Сообщение от B~Vladi
			
		
	 | 
	| 
		"У меня" будет один шаблон, один запрос и две фильтрации.
	 | 
	
И никакой копипасты.
Такой подход используется и в XSL.