Referencing a value from a list

C

Caroline M

Hi there,

I'm sure this has been posted before but I didn't know how to search
for it because I don't know the name for what I am trying to do so
I'll try and explain it as best I can.

I have an application that captures some data about football players.
I have fields for name, date of birth, nationality etc and things like
position such as Goalkeeper, Striker etc. I need to store all this
data in an XML file. In the case of the positions, I will populate a
control in the program with a predetermined list of available
positions (which also needs to be in the XML file) and then I simply
select one from the list for each player. My question is, how do I
store that for each player?

If I have something like:

<positions>
<position>Goalkeeper</position>
<position>Striker</position>
...
</positions>
<players>
<player>
<player_name>David Beckham</player_name>
<player_position> ??? what goes here??? </player_position>
...
</player>
</players>

What do I put in my player_position element above? Obviously one
solution is simply to copy the text from the position element but
thats not ideal because when I load the application from the XML file
later I'd want to be able to populate the UI control with the
available positions (which I might change the names of) and then
indicate that David Beckham is in the first position in the list for
exmple and avoid that duplication.

I hope that makes sense!

Thanks,
Caroline Middlebrook
 
P

p.lepin

I have an application that captures some data about
football players. I have fields for name, date of birth,
nationality etc and things like position such as
Goalkeeper, Striker etc. I need to store all this data in
an XML file.

<positions>
<position>Goalkeeper</position>
<position>Striker</position>
...
</positions>
<players>
<player>
<player_name>David Beckham</player_name>
<player_position> ??? what goes here???
</player_position>
...
</player>
</players>

What do I put in my player_position element above?
Obviously one solution is simply to copy the text from
the position element but thats not ideal because when I
load the application from the XML file later I'd want to
be able to populate the UI control with the available
positions (which I might change the names of) and then
indicate that David Beckham is in the first position in
the list for exmple and avoid that duplication.

The following approach is oft used, especially by people
with RDBMSy backgrounds:

<football-data>
<positions>
<position id="1">Goalkeeper</position>
<position id="2">Striker</position>
</positions>
<players>
<player>
<player_name position="1">David Beckham</player_name>
</player>
</players>
</football-data>

In this case, however, the following might be a bit better:

<football-data>
<positions>
<position>
<name>Goalkeeper</name>
<players>
<player>
<name>David Beckham</name>
</player>
</players>
</position>
<position>
<name>Striker</name>
</position>
</positions>
</football-data>

Also note that, depending on what you're using to process
this data, you might want to simply do away with the
positions element, store the positions' names within the
player elements and populate whatever needs to be populated
by selecting all the distinct values of player_position
elements in the document. For that matter, depending on
what your final goals (no pun intended) are, you might want
to employ all three of the proposed representations--
probably even more--and transform your data on the fly
using XSLT. You would still need to choose one canonical
representation of data, but it's hard to tell which one
would be best without knowing much more about your project,
so this decision is entirely up to you.
 
G

George Bina

Hi Caroline,

You can define an attribute, let's say for instance xml:id, for the
position element and specify a unique value for each position. Then,
in player_position you can have another attribute, for instance
positionId and specify one of those values that you defined for
position.
Depending on the schema language that you use there are different ways
to enforce this. Look for ID and IDREF.

Best Regards,
George
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,007
Messages
2,570,266
Members
46,865
Latest member
AveryHamme

Latest Threads

Top