As an amateur software developer (I'm still in academia) I've written a few schemas for XML documents. I routinely run into design flubs that cause ugly-looking XML documents because I'm not entirely certain what the semantics of XML exactly are.
My assumptions:
<property> value </property>
property = value
<property attribute="attval"> value </property>
A property with a special descriptor, the attribute.
<parent>
<child> value </child>
</parent>
The parent has a characteristic "child" which has the value "value."
<tag />
"Tag" is a flag or it directly translates to text. I'm not sure on this one.
<parent>
<child />
</parent>
"child" describes "parent." "child" is a flag or boolean. I'm not sure on this one, either.
Ambiguity arises if you want to do something like representing cartesian coordinates:
<coordinate x="0" y="1 />
<coordinate> 0,1 </coordinate>
<coordinate> <x> 0 </x> <y> 1 </y> </coordinate>
Which one of those is most correct? I would lean towards the third based upon my current conception of XML schema design, but I really don't know.
What are some resources that succinctly describe how to effectively design xml schemas?