Log in

Anathema Development
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in Malfeas' LiveJournal:

[ << Previous 20 ]
Saturday, April 19th, 2008
3:01 pm
Abyssal Mirrors...
For those who are interested, I have uploaded a plugin that will allow characters to take the Solar equivalents to certain Abyssal charms.  As per par, it is available through the "Plug-ins" link above.  I will attempt to update this file to include the new Martial Arts styles but my time is fairly limited these days so it will take time.  I'm not sure when I will get around to doing the remaining Abyssal charms...

It is worth noting that the book name will be off, I haven't yet talked to urskr about what the "tag" for this new book will end up being.  (Although, I suspect it will be:  Abyssals2nd.)

Current Mood: depressed
Sunday, December 16th, 2007
9:07 pm
Inaccuracy Rectifying Method...
I know that my contributions to this shared LJ has been a bit sparse as of late (though that is probably an understatement). Mostly it has been due to having very little of worth to say. However, that has changed a bit as of late.

For those using a flavor of Unix or a Linux distribution, I have created an new tool that can be used to put together your own plug-ins. This tool is currently a shell script, which requires the use of a terminal client (both OS lines include those). What it can do is: make your XML more readable, validate your XML against the plug-in DTD, and packages your plug-in files into a JAR that can be distributed. This tool is called: anathemaTool.sh.

It is worth noting that this tool is a work in progress. I will be adding and altering features of this program over time. My current plans are to remove the "temp" file copy prior to running the validation algorithm. I would also like to change the script from an explicit folder entry system (i.e. you have to type in "b o o k _ s c r o l l o f t h e m o n k") to something where you would just select it with the cursor or input the folder by number (i.e. press "1" for "book_scrollofthemonk"). I may also find new stuff to add, like I did in the last 3 days.

The newest thing that I've added to my "tool" has highlighted some errors that I made in both the original DTD file that I created for Anathema plug-ins and some errors that I've made in the plug-ins that I previously released. After correcting the errors, I've recreated my plug-ins and have uploaded new and now more accurate copies to the repository on "Google Code". (It should be noted that none of these errors have caused a problem within Anathema, so it is not strictly required.)

Update:  I forgot to mention that I've started work on a document that will hopefully explain in greater detail how to write the XML for Anathema plug-ins.  You can view the current version on my published documents on Google Docs.

Current Mood: accomplished
Monday, October 22nd, 2007
6:19 pm
I'm gonna leave you far behind.
I hope. Soon.

But not so soon that I wouldn't have time to release the third-anniversary-edition of Anathema. It's not as spectacular as last year's 1.0-release, but it's got some nice stuff. By people other than myself, most interestingly. As I mentioned earlier, these additions might be gone without further notice should they prove unstable.

Have fun with B&WT and Threshold Outcaste

Current Mood: content
Sunday, October 14th, 2007
9:37 pm
Auspicious Merriment with Version Control Systems (starring Subversion, co-starring Google Code)...
As one might guess from the title, I’ve been having learning how to use a Subversion (i.e. SVN) repository over this last week. This was mostly done in conjunction with starting a new plug-in for the recently released Sidereals book. After some trials and tribulations, I’ve learned a lot about SVN and I’ve finished (aside: crossing fingers) coding the XML for the Sidereals plug-in. Now, all we are waiting for is for some intrepid soul to code certain elements that can’t currently be accounted for in the XML of the file (aka. alternative and sub-charm effects).

Accordingly, I’ve changed my “Plug-In” URL (see above) to point to the Google Code repository and I’ve posted my previous two plug-ins there for download.

PS. In case it needs to be said, if anyone is interested in coding some plug-ins (the Lunars, perhaps) feel free to send me an e-mail and I’ll join you to the project.

Current Mood: accomplished
Monday, October 1st, 2007
7:39 pm
Import from EdExalted
[The final gunshot was an exclamation mark behind everything that had led to this point. Eerie silence filled the room.]
Got your attention? Good.

I've been playing with some thoughts concerning import and export, and I'd like to set up a generic wizard framework for tasks like these.
Of course, the first item that springs to mind is importing from EdExalted. Last I looked at it, his export files were in a nicely structured XML format, but alas, everything was number-coded, making the task of mapping his charms (etc...) to ours quite a burden.
I wonder whether anyone ever analyzed his file format in depth, or whether someone in good standing over there could make contact with him and ask for the Official Guide to EdExalted Goodness.

Would be neat.

Current Mood: pensive
Saturday, September 22nd, 2007
9:21 am
New Release, New Rules
Alright, peeps, 'ere we go.
The release is out, and while the game stays the same, the rules have changed: To compensate for our slow pace, we are now accepting code-contributions to Anathema - the first of which you might already enjoy as I write this. Onii has fixed a bug in the program, and Gareth has brought order to the equipment database, while Jontu has given me permission to peruse his Charm files.

Here's the gist: You have an idea and implement it. You send me your stuff. I review it, and tell you my thoughts. If everything is fine, I integrate it into our code and prepare a new release which will be marked as "custom" in one way or other.
The more we talk while you're working, the better the results might be, so feel free to contact me. And please make sure that your code stays compatible to this release which will serve as a base to the upcoming customized versions and remain available for purists.
All custom code will go to a seperate branch in SVN (styled "Outcaste" by suggestion of Onii) and might be removed at later dates if the need arises.

Since Onii has already lined up more stuff, I hope we'll speak again soon.


Current Mood: good
Sunday, August 12th, 2007
9:19 am
Do it yourself-Anathema
So you took Anathema by the horns and changed it inside out. And now, with nothing left to do, you despair - how to share your creation with the world? No need to cry, your friendly neighborhood developer is here to the rescue:
The Anathema website now features a short introduction to building your own distribution.

Combine it with the previously posted guide to SVN and you integrate all of our latest changes into your desktop version.

What legends will they tell of your creations?
Sunday, June 17th, 2007
8:14 pm
Some updates related to XSL and DTD...
Having read through the relevant sections of XML Primer Plus, I have altered “charmreview.xsl” and “charms.dtd”. The new versions are available at my site (listed above).

The most obvious change in “charmreview.xsl” is that I removed the XML tag information from the labels of each charm. (eg. Keyword (charmAttribute): now is Keyword:) Within the file, I’ve included sub-templates to layout some sections of the data. Which should make it easier to read and alter if you are interested in doing so. I’ve also changed most of the HTML elements over to what is supposed to be “proper form” in an XSL stylesheet (eg. <element name=”html” />, etc.) I’ve also included a bunch of comments in the file for those unfamiliar with XSL and who are interested in working with it. (If you want any further explanation included in the XSL, let me know.)

In “charms.dtd”, I’ve altered the attribute types for <charm id=”some.name”/> and <charmReference id=”some.name”/>. The net result of these alterations is that now if you validate your XML, it will also check that your <charmReference /> elements actually reference an extant <charm />. There is one word of warning, for some reason the Validome validator will throw at least 1 error related to ID’s if you check your XML there. So, if you get only one error, you are probably ok.

PS. Visitors to my site will also see “charmreview-xmlns.xsl”. For now you can ignore that file because it deals with things that are not currently in use with Anathema. Now on to XSD?

Current Mood: accomplished
Tuesday, June 5th, 2007
9:45 pm
I was going to be clever...
However, I couldn’t think of a witty title for this post. So on to business...
  • I’ve altered the “Scroll of the Monk” plug-in to conform to the newest release of Anathema.
  • I’ve altered the DTD to reflect the current content of the XML files.
    • This necessitated a change in two <essence/> element attributes (namely: value and cost). The change allows you to enter anything into those fields but as a consequence I had to remove the “default” entry.
  • I’ve altered the XSL to reflect the current layout of the sampled XML files.
  • A plug-in is now available to add Scroll of the Monk: The Imperfect Lotus to your list of Martial Arts styles. Though there are some things to keep in mind.
    • “Terrible Ascent-Driven Beast” style, does not have the “exclusive or” feature that is required by the text of the final charms. Will be fixed in a future release of Anathema.
    • “The Path of the Arbiter” style, does not currently render on the charm viewer and thus is disabled. Will be fixed in a future release of Anathema.
    • “Art of Relentless Persuasion” style, has a charm in which the <duration /> is not accurate. (It should be “Instant or One Scene” not “Instant”.)  Will be fixed in a future release of the plug-in.
NOTE:  Most of these (with the exception of  "The Path of the Arbiter"), are relatively minor issues that need to be watched out for but don't effect the overall functionality of the software or the plug-in.

EDIT:  As always, they can be found on my plug-in page, listed above.  Issue fixed in current version of plug-in (2007-06-06 @ 9:32pm -6 UTC).

Current Mood: content
Monday, June 4th, 2007
5:59 pm
Charm cost changed
One more thing: The format for Charms has changed slightly, so those using Jontu's plugins might experience oddities with charm costs.
5:57 pm
Err... ups. Apparently, my post for Malfeas went to The Wyld Hunt instead. I'm sorry.
Of course, the release is waiting for you as well, originally announced as follows:

It's up. Thanks to Jontu for the Charms, Demo, Jontu, Chris for the Ideas, Giovanni for the translation, and to myself for putting it all together.
(I deserved, didn't I? :))

All the things I promised last time are not here, so they'll probably be around next time. If... but that's an if I won't speak of yet.

Friday, June 1st, 2007
7:39 pm
Customizing Anathema
André has written a nice article on customizing Anathema. In it, he gives the basics on customizing character templates as well as an outline for adding and modifying Charms. All of this, mind, without touching the source.
He shares his wisdom here.

Also, I'm already a day late with the release. I'm currently re-testing my changes, hope to get it out on the weekend.
Monday, May 21st, 2007
10:41 pm
On following Jontu's instructions
Some of you following in Jontu's footsteps might already be trying to add new Charms to the program.
This is just to let you know that you either have to follow him to the letter and include the XSL and DTD files in your plugins - which I have not tried, but trust to work - or not even mention them in the XML files. Else, Anathema will break, and will continue to do so until the time I add these files to the official releases.
Which will not be prior to 1.4 due to a minor change in plans.
10:39 pm
Deep into the heart of the battle they fought...
So, Jontu's charm set and the recently added support for the martial arts tag have made you keen on a new version?
Keen enough you can't wait till next week?

Here's to you: Spurred by Clinton, whose  last name I unfortunately forgot and cannot look up here on my trusty laptop, I went ahead and wrote a guide on SVN access. SVN (a.k.a. Subversion) as you might know, is the version control system employed for Anathema's source code.
Which indicates that, by using this guide and your wits, you should be able to look into the bowels of Anathema itself and ... well... see what's there. Hack it, if you might. Just stay up to date. Just heed the disclaimer - we don't break things on purpose, but one never knows what might happen.

The text is up on the download-section of the website.
Saturday, May 19th, 2007
9:48 pm
To XSL and beyond...
Continuing with my monologue on XSL...

I've made some changes to the original charmreview.xsl. Most of these fix minor typo's but there are a couple of functional changes (see images below).
  • I've fixed the punctuation, no odd spacing issues.
  • I've "beefed up" (or made more confusing), the information related to Cost and Type.
    • This allows you to input non-number values without getting the trailing "m".
  • I've added the ability for you to display a comment that is contained within the &lt;charm /> element.
  • I've added a counter to the "header" information what will enumerate the number of charms in a tree.
  • I've also added the ability for the charmreview.xsl to display a leading comment (license boilerplate in this case).
I'm still looking for ways to improve the XSL.

On a different subject, I'm going to be making a change to the DTD. This change is to reflect that costs can be "non-number" values. (I swear they do this to drive me insane...)

A good thing to note is that Anathema (through Xerces) is applying the defaults from the DTD to XML charm lists. Which means that if someone forgets a cost or to specifically list the exalt type, Anathema will be supplied with whatever the default is (1 and solar, respectively).

I'll have both of these uploaded by tomorrow evening to the default site for my files.

PS. LJ-Cut isn't working...

Overview of Original XSL (Violet Bier) Overview of Original XSL (Violet Bier)

This shows the original form of the charmreview.xsl document. (I'm being lazy right now and just decided to display it from within the Violet Bier plug-in.)
Overview of  New XSL (FireDragon) Overview of New XSL (FireDragon)

This shows the new form of the charmreview.xsl document.
Old vs New in detail. Old vs New in detail.

This shows, in detail, the most notable differences between the old and new charmreview.xsl. Notice the odd spacing issues in the original.
Detail on header information. Detail on header information.

This shows the details on the header information for charmreview.xsl.
Details on FlameFlickerStance. Details on FlameFlickerStance.

This shows the details about this charm, notice the cost value.
Details on FlashFireTechnique. Details on FlashFireTechnique.

This shows the details about this charm.

Current Mood: geeky
Wednesday, May 16th, 2007
9:09 am
Anathema Breaking Atemi
This is a particularly important post for those who are interested in making plug-ins for Anathema. Given comments over the last couple of days, I think that it is important to cover the issue of stack traces. This is a debugging (aka. error finding) tool that is built directly into Anathema and the Java in which it is written.


net.sf.anathema.initialization.InitializationException: Failed to activate plugin net.sf.anathema.charm.cascades.
	at net.sf.anathema.initialization.plugin.AnathemaPluginManager.activatePlugins(AnathemaPluginManager.java:31)
	at net.sf.anathema.initialization.AnathemaInitializer.(AnathemaInitializer.java:33)
	at net.sf.anathema.Anathema.startApplication(Anathema.java:34)
	at org.java.plugin.boot.Boot.boot(Unknown Source)
	at org.java.plugin.boot.Boot.main(Unknown Source)
	at net.sf.anathema.AnathemaBootLoader.main(AnathemaBootLoader.java:11)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at apple.launcher.LaunchRunner.run(LaunchRunner.java:88)
	at apple.launcher.LaunchRunner.callMain(LaunchRunner.java:50)
	at apple.launcher.JavaApplicationLauncher.launch(JavaApplicationLauncher.java:52)
Caused by: org.java.plugin.PluginLifecycleException: can’t start plug-in net.sf.anathema.character@1.3.0
	at org.java.plugin.standard.StandardPluginManager.activatePlugin(Unknown Source)
	at org.java.plugin.standard.StandardPluginManager.checkPrerequisites(Unknown Source)
	at org.java.plugin.standard.StandardPluginManager.activatePlugin(Unknown Source)
	at org.java.plugin.standard.StandardPluginManager.activatePlugin(Unknown Source)
	at net.sf.anathema.initialization.plugin.AnathemaPluginManager.activatePlugins(AnathemaPluginManager.java:28)
	... 12 more
Caused by: java.lang.IllegalArgumentException: No enum const class net.sf.anathema.character.generic.impl.rules.ExaltedRuleSet.SecondEdtion
	at java.lang.Enum.valueOf(Enum.java:192)
	at net.sf.anathema.character.generic.impl.rules.ExaltedRuleSet.valueOf(ExaltedRuleSet.java:8)
	at net.sf.anathema.character.generic.impl.magic.persistence.CharmCompiler.registerCharmFile(CharmCompiler.java:47)
	at net.sf.anathema.character.CharacterPlugin.doStart(CharacterPlugin.java:38)
	at org.java.plugin.Plugin.start(Unknown Source)
	at org.java.plugin.PluginManager.startPlugin(Unknown Source)
	... 17 more

Where is the error at?

A stack trace is a list of processes that failed from the top most process down to the “root” error. That being the case, you want to focus your attention on the bottom most error.

Caused by: java.lang.IllegalArgumentException: No enum const class net.sf.anathema.character.generic.impl.rules.ExaltedRuleSet.SecondEdtion

In this case, there was a typo in the “plugin-fragment.xml” file (it is the only place were rule sets are specified). Assuming there are no other errors, once fixed this would work fine.

Acquiring a Stack Trace

For OS X users the process of acquiring a stack trace is as follows.

Go to: Macintosh HD -> Applications -> Utilities -> Console(.app)
Open: Console
(If you’ve never used console before, it will be in the first window you see. Otherwise, change to the “console.log”.)

For Windows users you have a few more steps.

Go to: Start -> Run
Type: “CMD” -> Enter
Type: CD c:/program files/anathema -> Enter
Type: java -jar anathema.jar -> Enter
(The stack trace will fill the resulting window.)

PS: I was going to write something completely different today but this is a much more important topic. I will probably cover my original topic later today.

Current Mood: quixotic
Friday, May 4th, 2007
11:33 am
Hacking through a forest of errors...
Recently, I've been working on the DTD that I made to make it a more general validation document for all charm lists. It's always interesting to see 500+ errors whittled down to a a nubbin with a bit of work. Currently, the document will validate charm lists for Power Combat - Lunars, Power Combat - Solars, Occult 2nd Edition, and Sidereals.

To an extent, Abyssals and Solar 1st Edition will also work but they use the element charm with only an id attribute, which is not how the DTD currently reads. I could change it but it would then be less useful as a tool to validate charms that don't use that special instance of the charm element. (i.e. I would have to make everything optional in a charm element. So if you forgot something that was necessary for the majority of charm elements, the validator wouldn't tell you.)

Currently, I'm working on getting Solar 2nd Edition to work but I have run into a problem with the validation. The problem is with another "grouping" entity that I'm using to validate the use of the genericCharmAttribute element keeps giving me errors about punctuation.

The enumerated type list must end with ')' in the "attribute" attribute declaration.

The annoying part is that I don't see where it is getting the error from. I'm not seeing an extra parenthesis nor do I see a missing one. The net result, is that it will validate all but 68 charms in the Solar 2nd Edition charm list. At least until I figure out what the problem is...
chrisvenus found my error, apparently too many spaces.

Update:I believe that I've finished a "universal" charm list XML DTD. If anyone want's to test this, please be my guest.

Oh, I ran across an interesting error with W3C's validator. My XML failed validation but there were 0 errors.

I did run into some interesting things related to what I'm doing with XML, DTD, and XSD...

The first is that I found a Java application that can convert DTD's into various other validation documents like XSD and Relax NG. This actually works surprisingly well but the code it generates needs to be cleaned up a bit because it makes everying into an xsd:token type (instead of xsd:integer, xsd:string, etc.). The software is called Trang.

The other software is another Java Application that will use DTD's to help fill out XML documents (see above for potential problems). It is called Xerlin. This is a multi-platform alternative to XML Doctor which is Windows specific.

PS. It's raining...

Current Mood: cranky
Friday, April 27th, 2007
9:53 am
What happens when a document is "validated"...
In general, the parsing program loads the XML file and then loads the linked validating document (DTD or XML Schema). Then it goes through each element, attribute and value and checks it against the validating document.

It is important to understand that there are limits to this process. It will validate elements and attributes. However, values are a bit more tricky to check. If the value can be predicted, you can have the validating document check for those values: e.g. type, exalt, various numbers, speed, defense, etc. However, it can not check values that can be anything, like: id, group, etc.

Example DTD:

<!ENTITY % Charm.Types "Simple|Supplemental|ExtraAction|Reflexive|Permanent">

<!ELEMENT charmtype (special?)>
<!ATTLIST charmtype type (%Charm.Types;) "Reflexive">
<!ELEMENT special EMPTY>
<!ATTLIST special primaryStep (%NumbersThru.10;) #IMPLIED
secondaryStep (%NumbersThru.10;) #IMPLIED
defense (%Exalted.2nd.Defense;) "-1"
speed (%Exalted.2nd.Speed;) "5">
The first entry, <!ENTITY>, sets up a variable that holds various charm types and is used later in the DTD. It is not strictly necessary but it does make the code a bit easier to read.

The second entry, <!ELEMENT>, tells the parsing program that the element “charmtype” may have 0 or 1 sub-element special.

The third entry, <!ATTLIST>, tells the parsing program that charmtype has an attribute (type) whose value should match the contents of the variable, %Charm.Types;. If there is no content in that attribute, use the default type: Reflexive.

Example XML:


<charmtype type=”mydogspot” />
<CharmType type=”Reflexive” />
<charmtype type=”reflexive”>
<special primaryStep=”1” />
<special primaryStep=”2” />


<charmtype />
<charmtype type=”Simple”>
<special defense=”-1” speed=”3”/>

Limitations on DTD's...

Including the above limitations, there are other things that you need to be aware of if you use the DTD.
  • In the example DTD, the parsing program will validate a special tag containing all the attributes.
  • In the example DTD, the parsing program will validate a special tag for any type.

Example Valid XML:

<charmtype type=”Reflexive”>
<special primaryStep=”1” secondaryStep=”2” defense=”-3” speed=”6”/>

<charmtype type=”Supplemental”>
<special primaryStep=”2” />

As always, DTD is a tool to make plug-in development easier to do but is not a replacement to testing your plug-in within Anathema.

PS. The XML schema is on hold pending my acquisition of a better XML schema book. If you want more details, look at my LJ.

Current Mood: content
Friday, April 20th, 2007
3:20 pm
I should really pay more attention to what I write...
Previously, I had written about the differences between "Well Formed" and "Valid" documents.  Well, in the case of my DTD, I trusted a tool (i.e. XMLDoctor) too much and didn't verify it enough with other sources.  So, the DTD from earlier this week will work with that application but it isn't valid with any other tool.

Fortunately, with much "head scratching" and digging, I've figured out what I did wrong and have set things to rights.  So, if you intend to use the DTD you will need to download it again.

Specific changes in the DTD:
  • I was surprised to discover that XML DTD's are case sensitive.
    • This may be inherited because HTML DTD's don't seem to care.
  • I didn't think to specifically list in the DTD that most elements are "empty" (singleton tags).
  • I also made a silly error and didn't note that the charm element will appear 1 or more times in the XML.
  • Not an error, I changed the "charmtype" element from CDATA (which could be anything) to specific charm types (and a default of "Reflexive").
There is one small error that I'm looking at fixing deals with the "essence" tags.  Currently, it is valid in the DTD to list both "cost" and "value" attributes on either of them.

Current Mood: determined
Thursday, April 19th, 2007
9:47 am
Another one bites the dust...
First, some updates since my last post:
  • Safari: It will not render XML unless attached to a XSL document. So maybe not as "useless" as I thought.
  • Internet Explorer: Doesn't seem to care about DTD's so it's not particularly useful when trying to verify them.
  • Firefox:  In regards to XSL, it does exactly what Internet Explorer does.
  • charmreview.xsl: I have updated this document to more closely match the layout in the Exalted books. Text in "silver" is Anathema specific.
Now onto the subject at hand:

Well Formed XML

When most people think of "valid XML" they are really thinking about "well formed XML".  Well formed XML is relatively trivial to write.  You simply have to follow the rules that govern all XML documents.
  • XML elements are case sensitive
  • XML elements require a closing tag
  • XML elements have to be properly nested
  • XML attributes are followed by an = sign and have their values enclosed in " ".
  • You can not use <, >, or "; inside the value of an attribute
Many of these rules are easy to forget.  However, you do have various programs to help you in creating "well formed" XML.  Most of these are already on your computer.
  1. Anathema
  2. Internet Explorer (for Windows users)
  3. Firefox
For those interested in this blog, the first program is easily the most common.  What better way to verify that your XML is valid than to use the program that it will become a part of?  However, first you have to get your XML into a plugin, copy it to the plugin folder, and then wait while Anathema launches.  This all takes time that might better be spent writing XML.

This makes Internet Explorer and Firefox easy recommendations.  Both will point out your errors and verifying that you made the correct change takes no more effort than refreshing the page.

Valid XML

Actually valid XML is much more difficult to write.  It requires both well formed XML and valid elements, attributes and values.  An easy question to as is what makes up a valid piece of content?  Depending on what you are writing there could be many different things:
  • Are you duplicating an existing <charm id />?
  • Do you have the right id referenced when you typed in the <charmReference />?
  • Though your XML is well formed, does it consist of correct elements?  (e.g. <charmtype> vs <charmType>)
The easiest tool to use to verify that you have valid XML is, of course:  Anathema.  The previous problems still remain, it takes time to create the plug-in, copy it over, and launch Anathema.

Enter DTD's and XML Schema's

To help make this process easier, you have two supplementary documents that you can write:  Document Type Definition (DTD) and XML Schemas.  These documents can be used to input set values that might have been forgotten (eg.  with the DTD if you forget <charm exalt /> it will enter "solar" as that attributes value.) or they can be used to create a template of what a given XML document should look like.  The problem is find applications that will all you to use them.

So far, I am aware of two open source projects that can use both:  Xerces (used in Anathema), and XMLDoctor (Windows only).  I'm not aware of any way you can directly use Xerces to aid in XML creation but the later contains a GUI that you can use to edit XML documents.

I've mostly finished with a Document Type Definition (aka. DTD) that works for the charms in the plug-in that I've written. I intend to update it to incorporate other non-typical elements but that will take time to accomplish.

The DTD can be downloaded at my plug-in site (see above). It can be attached to your XML as follows:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../charmreview.xsl"?>
<!DOCTYPE charmlist SYSTEM "../charms.dtd">

I have found a nice validator for DTD's: DTD & Schema Validator.

Before I forget, I've updated my plug-in to contain both "charmreview.xsl", "charms.dtd", and I've updated the charm XML files to link to them.

Current Mood: content
[ << Previous 20 ]
Anathema   About LiveJournal.com