Mikhail, вы все почти правильно реализовали на PHP(не понятно только зачем return нужен после $result = $xsl->build($xmlData, 'ВыводЕденицыАмерики'

. А также проверка:
$_GET['id'] == "vin"
- неверна. Т.к. в элементе $_GET['id'] будет содержаться НЕ строка 'vin', а конкретный идентификатор автомобиля. Например, KM8JN72D95U211241. Поэтому фрагмент:
&& $_GET['id'] == "vin"
можно вообще убрать).
Я подобную реализацию и пыталась описать. Но сейчас получается, что в зависимости от условия разные XSL-шаблоны применяются к одному и тому же XML-коду. Но вам-то нужно обрабатывать только тот фрагмент XML-а, который соответствует имеющемуся в get-е vin. Чтобы имеющееся в get-е значение vin-а "сообщить" XSL-шаблону, нужно менять сам XML-код. Для этого предлагаю дописывать в переменную $xmlData еще один XML-тэг, содержащий наш vin. Например:
$ExternalXml = new ExternalXml();
$array['show_item'] = to_str($_GET['id']);
$type = 0;
$xmlData.= $ExternalXml->GenXml($array, $type);
$result = $xsl->build($xmlData, 'ВыводЕденицыАмерики');
И еще замечание по коду: создание объекта класса
$xsl = new xsl();
нужно переместить перед условием
if(isset($_GET['id']))