Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re^2: Config Files Redux

by chromatic (Archbishop)
on Nov 24, 2006 at 05:37 UTC ( #585824=note: print w/replies, xml ) Need Help??

in reply to Re: Config Files Redux
in thread Config Files Redux

I prefer XML with a DTD because it can help prevent size=blue or color=large type mistakes...

You've said this multiple times, but you've never explained how.

The how is the same way you would do it for any other type of file. Someone writes a comprehensive set of rules by which to validate the configuration file. The file format doesn't matter. The format of the rules doesn't matter. Something reads and processes the configuration file and the rules and applies the rules to the processed file.

You have to do this anyway to parse the configuration file in your application.

Now you may have better tools to do this with an XML application than with any other format, but then your real argument for using XML is better tools, not validation.

Replies are listed 'Best First'.
Re^3: Config Files Redux
by Fletch (Chancellor) on Nov 24, 2006 at 06:25 UTC

    And tools like this exist for formats like YAML; for example you can use kwalify to produce a DTD-like schema for YAML documents.

Re^3: Config Files Redux
by traveler (Parson) on Nov 24, 2006 at 15:40 UTC
    If the DTD is a tool, then yes, the issue is better tools. The way to do it in a DTD is:
    <!ATLIST box color (red|blue|green) blue>
    This allows
    <box color=red />
    but not
    <box color=large />
    The default is blue in this example.

      Pity that's not XML, though.

      Worse, it means that everyone who edits the configuration file either forgoes validation or has to use an XML-aware editor. There goes scriptability and so many of the lovely Unix administration tools we've grown to love over the past few decades.

        Pity that's not XML, though.
        It was in XML1.0 and is still widely used. I agree that XML Schema is the current way, but it is very, although more flexible and powerful. It can be used for the same things, though.

        There goes scriptability and so many of the lovely Unix administration tools we've grown to love over the past few decades.
        I'm not sure why. If we want the validation of, say, a DTD, then we need a (possibly) new tool for that. What validates crontab, for example? When I build a major app, I often build validation tools for the config files. I find it easier to use XML and a DTD than going through the difficulty of writing my own parsing and validating code.

        Yes, I do understand and agree that the application needs to validate all input. I just like the idea of an external tool to do the first pass.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://585824]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (1)
As of 2021-10-23 02:42 GMT
Find Nodes?
    Voting Booth?
    My first memorable Perl project was:

    Results (86 votes). Check out past polls.