[XML-SIG] Advice On Testing With XML

Stefan Behnel stefan_ml at behnel.de
Thu Jul 9 22:13:42 CEST 2009


Tennis Smith wrote:
> First, a little background.  My charter is to generate XML test messages to
> make sure we process them correctly.  These messages are validated against a
> schema.  I'm using generateDS to generate the test messages.  This ensures
> the xml is correct.

Hmm, I never (really) used generateDS. AFAIR, it generates Python objects
that you work with. Does it validate their structure while you do so? Or
did you refer to the schema validation that "ensures" the message correctness?

> Everything works great except for one problem that keeps cropping up.  Some
> elements cannot be defined easily ahead of time when generating the final
> test document.
> For example, a field of type "xs:date" will have to be modifed because tests
> are based on a relative date, not an absolute one. That is, dates in tests
> are based on things like "3 days before today".
> Therefore, I'd like to figure out some way to change certain fields like
> date so that I can pass a string and _still validate_ it against the
> schema.  Using the example, "-3" would be passed in the date field so that
> the test harness will recognize it as "today - 3 days".

Why can't you just write the corresponding date into the messages when you
generate them?

> Put another way, the goal is to make this:
> *  <xs:element maxOccurs="1" minOccurs="0" name="date" type="xs:date"/>*
> ...behave like this:
>  *<xs:element maxOccurs="1" minOccurs="0" name="date" type="xs:string"/>*
> Naturally, I can edit and copy/paste into a completely new schema file. But
> I was hoping someone could tell me if I can do some kind of XSLT or whatever
> to get the same effect.

I'd just change the schema on the way in. You didn't say what tool you use
for validation, but at least in lxml, modifying the schema tree is pretty
trivial. You can simply use XPath to find all date types and then fix their
type attribute.


More information about the XML-SIG mailing list