Hallo TobiasBuschi,
Ich denke, die beim W3C haben bestimmt ein Grund dafür, ich kenne ihn nicht. Wenn da noch jemand die Antwort weiss...?
In der Spezifikation steht schonmal nichts dazu soweit ich das sehe.
Irgendwelche Effizienzgründe beim Parsen kann das auch nicht haben. Mit typischen Parsing-Verfahren kann man XML parsen, ob da nun diese '<' zugelassen werden oder nicht.
Ich vermute mal, dass diese Einschränkung aus SGML übernommen wurde und das es da entweder Aufgrund der freieren Syntax einen Grund dafür gab oder dass man sich die Möglichkeit offen halten wollte, das Zeichen in einer späteren Version zu verwenden, bspw. für Tags in Attributen o.ä.
Wenn Du das wirklich herausfinden willst, musst Du wohl mindestens in die SGML-Spezifikation schauen. Wenn sich daraus kein Grund ergibt, bleibt Dir wohl nur die Leute zu fragen, die XML und SGML mit entwickelt haben...
Für eine praktische Lösung kannst Du Dir immer noch einen Workaround ausdenken. Bspw:
<foo>
<tmpl:attribute name="bla"><?php echo("blub")?></tmpl:attribute>
</foo>
Das kannst Du mit Deinem Editor dann verabreiten und zur Ausführung konvertierst Du das in ein PHP-Script der Form:
<foo bla="<?php echo("blub")?>"></foo>
Eine richtige Templatesprache, die Du dann evtl. auch in PHP übersetzt, könnte allerdings dennoch sinnvoller sein. Dann hast Du nämlich auch die Möglichkeit zu prüfen, ob das Template sich an bestimmte Regeln hält und nicht irgendetwas gefährliches tut.
Wenn da PHP drin steht, musst Du dem Benutzer vertrauen.
Grüße
Daniel