[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Validation question


validate svg
I want to validate SVG content, up to the level that I can be certain that the document
doesn't produce errors in rendering. Basically the only way to do this currently is to
load the document to a viewer and see if it works. I don't want this, but much lighter
solution.

There is only a DTD available for SVG, but I'm looking for some better validation schema.
However, I don't think the validation that SVG requires can be expressed with the ones
(XML Schema, RELAX NG) I have investigated. (Using something else than DTD would of course
require creating that schema, but I still consider that smaller task than writing a custom
validator...)

There are a few problematic things in SVG:

- Some elements (such as "feConvolveMatrix") have a matrix as their parameter. This matrix
is defined with two attributes: "order" (number-optional-number) and "kernelMatrix" (list
of numbers). In order for the attributes to be valid, the "kernelMatrix" should have as
many values as the order defines (for instance order = "3, 2" means that the matrix should
have 6 values). There are also other cases of cross-dependencies like this.

- Animation elements ("animate", "set", "animateColor", "animateTransform", "animateMotion")
have some attributes ("by", "from", "to", "values") that define the new values for the
animated attribute of some other element. The valid values for the attribute depend on the
target attribute and the target element that has the attribute. For instance markup
<set xlink:href = "#foobar" attributeName="type" to="turbulence" begin="3s" dur="6s"/>
is completely valid if the element whose id is "foobar" is "feTurbulence". If it happens
to be for instance "feColorMatrix", this is not valid. "feColorMatrix" does have "type"
attribute, but "turbulence" is not a valid value for that. (And it is not even necessary to
define "xlink:href" attribute to specify the animated element, but if the attribute is
missing, the animation target is the parent element.)

- Then there's all kind of little issues where the data to be validated is stored in the
attribute (for conserving space) although an XML representation would be much more nicer
and easier to parse. For example:
<path d="M100,200 C100,100 250,100 250,200 S400,300 400,200" />
would be much easier to process and validate if it was something like this:
<path>
    <moveto>
        <coordinate x = "100" y = "100" />
    </moveto>
    <curveto>
        <coordinate x = "100" y = "100" />
        <coordinate x = "250" y = "100" />
        <coordinate x = "250" y = "200" />
    </curveto>
    <smoothcurveto>
        <coordinate x = "400" y = "300" />
        <coordinate x = "400" y = "200" />
    </smoothcurveto>
</path>
but unfortunately it isn't. (And I very well understand why, considering the space it
takes...) So now the validator has to check if there is correct amount of numbers after
each letter code, if the letter codes are valid etc. The valid format can be expressed
with a BNF, but there are also even more complex ones to validate, such as datetime
strings in ISO8601 format where BNF is not enough.

And of course there are all kinds of normal validation issues like restricted ranges
for numeric values, checking if URI's are valid etc.

So, I'd like to know if any validation schema can handle such things like cross-
dependencies of attributes, dependencies between attributes and element types, and
parsing of complex attributes for validating them, or (as the designers of various
schemas are probably reading the list) if there are any plans for the features I'm
looking for.

I probably have to write some custom code anyway, so I'd also like to know if there is
some validator software that uses a schema that can catch as many errors as possible,
and then use some custom code written by the user for validating the "hard cases".

One option I think would be to construct some sort of XSLT transformation that re-formats
complex attributes to XML that is easier to validate (like the path example above) but I
know very little about XSLT, so I don't really know if it can handle things like this. If
somebody has pointers for cases where this has been succesfully done, I'd be grateful.

Kiia Kallio
Software Engineer
Fathammer Ltd.
http://www.fathammer.com

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.