Twin Rose said:
When I was forced to use "CS stuff" in it, it's usually indexing, and then I'll also have a 'string tag' for the same thing.. One is to speed up load in CS (and of coruse, anyone can use the same indexing, there's no law against that) and the other is for others to use. Working with my data-entry folks, we're making it extra robust. Even if the program itself doesn't USE all the tags, it still keeps the nodes aroudn and puts them out there for things like custom character sheets. I'm a believer in putting "more" in the data-files than may be needed for completeness, and the way people like their data formatted differently, that seems to be a good idea.
Mmms, well I downloaded the beta, after no responses from polite email inquiries, and created a character and saved him. Hopefully that the program is still in beta, you will be open to suggestions from the community XML format isn't bad, it could use some work though too. Lots of stuff isn't grouped together that should be, some of it is though [such as Skills, Feats, etc.].
To throw another DTD out into the mix, I've been putting together Character Viewers for the PocketPC and have been focusing on M&M, but the basics apply to all the d20 products I've seen so far. Anyways, here it is. You can see everything is broken up into discrete blocks of data. This helps keep things organized, but also helps with finding data on limited resource devices. I should note that currently it has the character abilities hard-coded. I think you could go one way or another on this, but it should probably not be that way. Same applies to the saving throws. At this time, its not namespaced at all, but it should be namespaced based on the information type, i.e. all the SRD stuff should be noted in a SRD namespace, all the 3.0 should be in a 3.0 namespace, d20Modern in its own namespace, M&M stuff in its, etc.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT CHA (#PCDATA)>
<!ATTLIST CHA
mod CDATA #REQUIRED
>
<!ELEMENT CON (#PCDATA)>
<!ATTLIST CON
mod CDATA #REQUIRED
>
<!ELEMENT DEX (#PCDATA)>
<!ATTLIST DEX
mod CDATA #REQUIRED
>
<!ELEMENT DMG (#PCDATA)>
<!ELEMENT FORT (#PCDATA)>
<!ELEMENT INIT (#PCDATA)>
<!ELEMENT INT (#PCDATA)>
<!ATTLIST INT
mod CDATA #REQUIRED
>
<!ELEMENT REF (#PCDATA)>
<!ELEMENT STR (#PCDATA)>
<!ATTLIST STR
mod CDATA #REQUIRED
>
<!ELEMENT WILL (#PCDATA)>
<!ELEMENT WIS (#PCDATA)>
<!ATTLIST WIS
mod CDATA #REQUIRED
>
<!ELEMENT ability_block (STR, DEX, CON, INT, WIS, CHA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT attack_block (base, melee, ranged, mental)>
<!ELEMENT background (#PCDATA)>
<!ELEMENT base (#PCDATA)>
<!ELEMENT birthplace (#PCDATA)>
<!ELEMENT capacity_block (light, medium, heavy, maximum, lifting, dragging)>
<!ELEMENT character (character_block, ability_block, save_block, damage_block, condition_block, movement_block, capacity_block, attack_block, defense_block, feat_block, weakness_block, skill_block, language_block, power_block)>
<!ELEMENT character_block (guid, name, realname, level, race, points, initiative, size, hero, age, gender, height, weight, description, personality, background, birthplace, firstappearance, occupation, quote, notes)>
<!ELEMENT condition (#PCDATA)>
<!ATTLIST condition
guid CDATA #REQUIRED
>
<!ELEMENT condition_block (condition)>
<!ELEMENT damage_block (stun, lethal)>
<!ELEMENT defense_block (base, standard, flatfooted, mental)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT document (player_block, character)>
<!ELEMENT dragging (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT feat (#PCDATA)>
<!ATTLIST feat
guid CDATA #REQUIRED
appliesto CDATA #IMPLIED
>
<!ELEMENT feat_block (feat+)>
<!ELEMENT firstappearance (#PCDATA)>
<!ELEMENT flatfooted (#PCDATA)>
<!ELEMENT gender (#PCDATA)>
<!ELEMENT guid EMPTY>
<!ELEMENT heavy (#PCDATA)>
<!ELEMENT height (#PCDATA)>
<!ELEMENT hero (#PCDATA)>
<!ATTLIST hero
max CDATA #REQUIRED
>
<!ELEMENT initiative (#PCDATA)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT language_block (language)>
<!ELEMENT lethal (#PCDATA)>
<!ELEMENT level (#PCDATA)>
<!ELEMENT lifting (#PCDATA)>
<!ELEMENT light (#PCDATA)>
<!ELEMENT maximum (#PCDATA)>
<!ELEMENT medium (#PCDATA)>
<!ELEMENT melee (#PCDATA)>
<!ELEMENT mental (#PCDATA)>
<!ELEMENT movement (#PCDATA)>
<!ATTLIST movement
base (30 | 60) #REQUIRED
run (120 | 60) #REQUIRED
sprint (120 | 3840) #REQUIRED
multiplier (4 | 64) #REQUIRED
>
<!ELEMENT movement_block (movement+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT notes (#PCDATA)>
<!ELEMENT occupation (#PCDATA)>
<!ELEMENT personality (#PCDATA)>
<!ELEMENT player_block (name, email, url)>
<!ELEMENT points (#PCDATA)>
<!ELEMENT power (#PCDATA)>
<!ATTLIST power
guid CDATA #REQUIRED
root CDATA #IMPLIED
DC (15 | 20 | 22) #IMPLIED
level CDATA #IMPLIED
appliesto (Super-Con | lead | light) #IMPLIED
flaw CDATA #IMPLIED
extra CDATA #IMPLIED
stunt CDATA #IMPLIED
>
<!ELEMENT power_block (power+)>
<!ELEMENT quote (#PCDATA)>
<!ELEMENT race (#PCDATA)>
<!ELEMENT ranged (#PCDATA)>
<!ELEMENT realname (#PCDATA)>
<!ELEMENT save_block (DMG, REF, FORT, WILL, INIT)>
<!ELEMENT size (#PCDATA)>
<!ELEMENT skill (#PCDATA)>
<!ATTLIST skill
guid CDATA #REQUIRED
total CDATA #REQUIRED
rank CDATA #REQUIRED
>
<!ELEMENT skill_block (skill+)>
<!ELEMENT standard (#PCDATA)>
<!ELEMENT stun (#PCDATA)>
<!ELEMENT url (#PCDATA)>
<!ELEMENT weakness (#PCDATA)>
<!ATTLIST weakness
guid CDATA #REQUIRED
appliesto (Amnesia | Kryptonite) #IMPLIED
>
<!ELEMENT weakness_block (weakness+)>
<!ELEMENT weight (#PCDATA)>
I should note that this format was started some time ago, and definetly way before the TR started their init to convert to XML. I'm just throwing this out for examples sake, as I think some communication on the subject is good [but not as much as the yahoogroup thats trying to represent 3rd Ed. in XML.. thats a lost cause I think].