Angular:

http://angularjs.org/

HTML

<script type="text/ng-template" id="X-template.html">
      X template
    {{prova}}
</script>
<script type="text/ng-template" id="Y-template.html">
      Y template
    {{prova}}
</script>
<div ng-controller="MyCtrl">
    <my-directive type="X"></my-directive>
    <my-directive type="Y"></my-directive>
</div>

JavaScript

var app = angular.module('myApp',[]);

app.directive('myDirective', function() {
    return {
        restrict: 'E',
        compile: function(element, attrs) {
            element.append('<div ng-include="\'' + attrs.type + '-template.html\'"></div>');
        },
        controller: function($scope) {
        	$scope.prova = 'internal';
        }
    }
});

function MyCtrl($scope) {
    $scope.prova = 'external';
}