I suppose it all depends on what you are using golfml for.
1 ) Static: A small course(s) definition to display on a Club's web site
2 ) Semi-dynamic: A fairly small set of players (< 200) for a society or tournament
3 ) Fully dynamic: A large match/tournament database
It also depends on which kind of software is using golfml and how it displays results.
Imagine a busy club with a few hundred players and a couple of tournaments a month along with many regular handicap-qualifying games. To keep all the data for such a club in one golfml file is possible with the current structure, but surely impractical. Very soon, the golfml file would grow to megabytes. Whilst this is OK for a relational SQL database, it is difficult to imagine processing a multi-megabyte golfml file via stylesheets on the web to display a simple scorecard.
While I understand the elegance of a single golfml document for all data, in practical daily use the size soon becomes prohibitive for most XML processors, and the need for internal reference spoils the elegance anyway.
In a fully relational DBMS it is simple to relate course data, player data and match data. My own golf society website is SQL-driven, and I guess this is the solution most clubs and societies use.
So what are the advantages of an XML-based format?
1 ) It is an open, universal data schema
2 ) It is human-readable and easily edited
3 ) It can display data directly on a web page via a stylesheet
4 ) It can be transformed using simple tools into other data formats (including DB tables)
What are the disadvantages of an XML-based format?
1 ) It is difficult to manage large amounts of data (megabytes)
2 ) It is awkward to dynamically manage
The disadvantages only become apparent when managing scores and matches within a golfml document already packed full with course and player data.
The '3-document solution' (static course, semi-static player and dynamic score) is a practical response to the difficulties in implementing golfml in the real world. Even a '2-document solution' (course+players, scores/matches) is helpful. All documents are of course well-formed golfml files, and combined for different purposes when needed.
xinclude is one way. I'll test the Apache cocoon engine to see if it is implemented. There are other ways: google 'Include XML' to see them.
As a developer trying to use golfml I am simply pointing out real-world problems in current implementation.
:G