The closest you can get using just XML without using further XML processing tools is using entities, XML's mechanism for text substitution variables:
<!DOCTYPE project [
<!ENTITY FirstName "first">
<!ENTITY LastName "last">
]>
<project name="My Project">
<property name="FirstName" value="&first;"/>
<property name="LastName" value="&last;"/>
</project>
You can store your entities in an external file as well:
<!-- myproperties.dtd -->
<!ENTITY FirstName "first">
<!ENTITY LastName "last">
then include it into your main file as follows:
<!DOCTYPE project SYSTEM "myproperties.dtd">
<project name="My Project">
<property name="FirstName" value="&first;"/>
<property name="LastName" value="&last;"/>
</project>
You can also further organize your external myproperties.dtd
file (or whatever name you chose) by having it include a common globalproperties.dtd
or so and then declare only project-specific entities, or overides global properties/entities, etc.
See also XML configuration inheritance, avoid duplications.
SGML (on which XML is based) has "short references" which you can use to actually parse a properties file (or many other types of custom text file formats) with the usual syntax eg. lines containing item=value
pairs. But you wouldn't be able to assign values to entities using that technique as short references (= custom character sequences that SGML replaces by tags or other text) are only recognized in content rather than in DOCTYPE declaration.