Menu
News
All News
Dungeons & Dragons
Level Up: Advanced 5th Edition
Pathfinder
Starfinder
Warhammer
2d20 System
Year Zero Engine
Industry News
Reviews
Dragon Reflections
Columns
Weekly Digests
Weekly News Digest
Freebies, Sales & Bundles
RPG Print News
RPG Crowdfunding News
Game Content
ENterplanetary DimENsions
Mythological Figures
Opinion
Worlds of Design
Peregrine's Next
RPG Evolution
Other Columns
From the Freelancing Frontline
Monster ENcyclopedia
WotC/TSR Alumni Look Back
4 Hours w/RSD (Ryan Dancey)
The Road to 3E (Jonathan Tweet)
Greenwood's Realms (Ed Greenwood)
Drawmij's TSR (Jim Ward)
Community
Forums & Topics
Forum List
Latest Posts
Forum list
*Dungeons & Dragons
Level Up: Advanced 5th Edition
D&D Older Editions
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Resources
Wiki
Pages
Latest activity
Media
New media
New comments
Search media
Downloads
Latest reviews
Search resources
EN Publishing
Store
EN5ider
Adventures in ZEITGEIST
Awfully Cheerful Engine
What's OLD is NEW
Judge Dredd & The Worlds Of 2000AD
War of the Burning Sky
Level Up: Advanced 5E
Events & Releases
Upcoming Events
Private Events
Featured Events
Socials!
Twitch
YouTube
Facebook (EN Publishing)
Facebook (EN World)
Twitter
Instagram
TikTok
Podcast
Features
Top 5 RPGs Compiled Charts 2004-Present
Adventure Game Industry Market Research Summary (RPGs) V1.0
Ryan Dancey: Acquiring TSR
Q&A With Gary Gygax
D&D Rules FAQs
TSR, WotC, & Paizo: A Comparative History
D&D Pronunciation Guide
Million Dollar TTRPG Kickstarters
Tabletop RPG Podcast Hall of Fame
Eric Noah's Unofficial D&D 3rd Edition News
D&D in the Mainstream
D&D & RPG History
About Morrus
Log in
Register
What's new
Search
Search
Search titles only
By:
Forums & Topics
Forum List
Latest Posts
Forum list
*Dungeons & Dragons
Level Up: Advanced 5th Edition
D&D Older Editions
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Menu
Log in
Register
Install the app
Install
The
VOIDRUNNER'S CODEX
is coming! Explore new worlds, fight oppressive empires, fend off fearsome aliens, and wield deadly psionics with this comprehensive boxed set expansion for 5E and A5E!
Community
General Tabletop Discussion
D&D Older Editions
Completely Unofficial 4e Dataset Xml Schema and Discussion (Updated 7/02)
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="jimmifett" data-source="post: 4358968" data-attributes="member: 55006"><p>Datasets based on this schema are not intended to be handwritten. I handwrite them bc I created it, understand what is intended with the schema, and have a wonderful tool for assisting me in handwriting. It is intended to be used and written by programs.</p><p> </p><p>The point of the GUIDs is to make sure anyone who adds content does not inadvertantly use another key being used by someone else in a completely seperate and unrelated dataset. When yet another person decides to use both of them for whatever reason, that person can be safe in knowing that they wont have duplicate keys. (yes, i know, GUID is not truly unique, but it's awfully darn close and a lot of thought went into them to make them that way, hence the standard)</p><p> </p><p>Naturally, XMLBeans has nothing to do with GUIDs. It does however, have a lot to do with making objects as i'm sure you are aware. <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite1" alt=":)" title="Smile :)" loading="lazy" data-shortname=":)" /></p><p> </p><p>I specifically made some things verbose as they have different properties than other related things, as well as different uses. I wanted to be able to define the specifics of something in one area, and then load a much simpler reference in a different area. In portions that have similar data, forexample, a power's keywords, I wanted to make sure that the keywords are segregated into grouped categories. I don't want to mix damage types with effect types or accessory keywords. Some powers also describe offering a choice of keywords for the user to select and apply, such as dragon's breath. I wanted to differentiate these choice of selection keywords from regular keywords.</p><p> </p><p>Additionaly, I wanted there to be the ability to have mulitple choice groups, such that I can make choice (1) in a first group of items, and choice (2) from a second group of elements. To represent things like this, I have to make things a bit more complex than what some others above have suggested.</p><p> </p><p>Back to the GUIDs, my intention with SQL is for there to be many tables, each with an entry containing the guid. The guid is a indexable unique key, but shouldn't be the Primary Key, as that should be some sort of integer. Rows in other tables would use that integer as a foreign key to link themselves together and provide consistency in the DB. That begs the question then, "how do I make sure new data i'm creating or importing in my local database does not unintentionally overwrite data in someone else's local database? Surely they could just as well have a diferent integer for the same item that I have." My solution, GUID stamped entries. An import program would look at an item's ID attribute, then check the apporpriate table via index to see if that item already exists. If it does, it can then compare the source datasets and the versions to see if it is importing new data. It can then add that item to it's tables generating an integer Primary Key for reference in other tables. As we all know, integers are often the best sql datatype for primary and foreign keys. As i've said above, the GUID is also used here when you create your own data and want to share with others, you primary key integer won't be very useful to others, since it may already be in use for a different item in their database. Thus, you supply your own GUID for the item you wish to share from your tables. (Any program, when adding new data, should be creating GUIDs to insert into the DB as well.)</p><p> </p><p>For those wondering just what in the nine hells a GUID (or UUID) is:</p><p>Globally Unique Identifier (Universally Unique Identifer)</p><p>It can be represented several ways, I use ones that are based off time and node (<a href="http://en.wikipedia.org/wiki/Universally_Unique_Identifier" target="_blank">version 1 UUIDs</a>) using hex in a <span style="font-family: 'Courier New'">8-4-4-4-12</span> format. This is the <a href="http://www.famkruithof.net/uuid/uuidgen" target="_blank">UUID Generator</a> I use most often when I am inputting data by hand. There is also version 4 that instead of time / node, uses random numbers for generating. There are several libraries for various programming languages to do they same.</p><p> </p><p>While UUIDs are not gaurenteed to be unqiue, the keyspace is so large (2^128) that it is widely felt that the chance of overlapping is sufficiently small, when used for a specific purpose such as differentiating similar data, there is a presumption of uniqueness.</p><p> </p><p>And knowing is half the battle.</p><p>(the other half involves lots of guns)</p><p> </p><p>-J</p></blockquote><p></p>
[QUOTE="jimmifett, post: 4358968, member: 55006"] Datasets based on this schema are not intended to be handwritten. I handwrite them bc I created it, understand what is intended with the schema, and have a wonderful tool for assisting me in handwriting. It is intended to be used and written by programs. The point of the GUIDs is to make sure anyone who adds content does not inadvertantly use another key being used by someone else in a completely seperate and unrelated dataset. When yet another person decides to use both of them for whatever reason, that person can be safe in knowing that they wont have duplicate keys. (yes, i know, GUID is not truly unique, but it's awfully darn close and a lot of thought went into them to make them that way, hence the standard) Naturally, XMLBeans has nothing to do with GUIDs. It does however, have a lot to do with making objects as i'm sure you are aware. :) I specifically made some things verbose as they have different properties than other related things, as well as different uses. I wanted to be able to define the specifics of something in one area, and then load a much simpler reference in a different area. In portions that have similar data, forexample, a power's keywords, I wanted to make sure that the keywords are segregated into grouped categories. I don't want to mix damage types with effect types or accessory keywords. Some powers also describe offering a choice of keywords for the user to select and apply, such as dragon's breath. I wanted to differentiate these choice of selection keywords from regular keywords. Additionaly, I wanted there to be the ability to have mulitple choice groups, such that I can make choice (1) in a first group of items, and choice (2) from a second group of elements. To represent things like this, I have to make things a bit more complex than what some others above have suggested. Back to the GUIDs, my intention with SQL is for there to be many tables, each with an entry containing the guid. The guid is a indexable unique key, but shouldn't be the Primary Key, as that should be some sort of integer. Rows in other tables would use that integer as a foreign key to link themselves together and provide consistency in the DB. That begs the question then, "how do I make sure new data i'm creating or importing in my local database does not unintentionally overwrite data in someone else's local database? Surely they could just as well have a diferent integer for the same item that I have." My solution, GUID stamped entries. An import program would look at an item's ID attribute, then check the apporpriate table via index to see if that item already exists. If it does, it can then compare the source datasets and the versions to see if it is importing new data. It can then add that item to it's tables generating an integer Primary Key for reference in other tables. As we all know, integers are often the best sql datatype for primary and foreign keys. As i've said above, the GUID is also used here when you create your own data and want to share with others, you primary key integer won't be very useful to others, since it may already be in use for a different item in their database. Thus, you supply your own GUID for the item you wish to share from your tables. (Any program, when adding new data, should be creating GUIDs to insert into the DB as well.) For those wondering just what in the nine hells a GUID (or UUID) is: Globally Unique Identifier (Universally Unique Identifer) It can be represented several ways, I use ones that are based off time and node ([URL="http://en.wikipedia.org/wiki/Universally_Unique_Identifier"]version 1 UUIDs[/URL]) using hex in a [FONT=Courier New]8-4-4-4-12[/FONT] format. This is the [URL="http://www.famkruithof.net/uuid/uuidgen"]UUID Generator[/URL] I use most often when I am inputting data by hand. There is also version 4 that instead of time / node, uses random numbers for generating. There are several libraries for various programming languages to do they same. While UUIDs are not gaurenteed to be unqiue, the keyspace is so large (2^128) that it is widely felt that the chance of overlapping is sufficiently small, when used for a specific purpose such as differentiating similar data, there is a presumption of uniqueness. And knowing is half the battle. (the other half involves lots of guns) -J [/QUOTE]
Insert quotes…
Verification
Post reply
Community
General Tabletop Discussion
D&D Older Editions
Completely Unofficial 4e Dataset Xml Schema and Discussion (Updated 7/02)
Top