Просто чтобы прояснить проблему здесь - ошибка в следующем бите кода:
<xsl:attribute name="src">
<xsl:copy-of select="/root/Image/node()"/>
</xsl:attribute>
Инструкция xsl: copy-of берет узел или набор узлов и создает его копию - выводя узел или набор узлов. Однако атрибут не может содержать узел, только текстовое значение, поэтому xsl: value-of было бы возможным решением (так как это возвращает текстовое значение узла или набора узлов).
НАМНОГО более короткое решение (и, возможно, более элегантное) будет следующим:
<img width="100" height="100" src="{/root/Image/node()}" class="CalloutRightPhoto"/>
Использование {} в атрибуте называется шаблоном значения атрибута и может содержать любое выражение XPATH.
Обратите внимание, здесь можно использовать тот же XPath, который вы использовали в xsl_copy-of, поскольку он знает, что он принимает текстовое значение при использовании в шаблоне значений атрибутов.