Importing the cXML DTD

Has anyone come across problems importing the Ariba cXML DTD
in WM Developer. Here are the steps I took:

  1. Downloaded the cXML 1.2.008 DTD (available from
    [url=“http://cxml.org/files/downloads.cfm”]http://cxml.org/files/downloads.cfm[/url] )
  2. Created a new record called ‘cXML’ from this DTD.
  3. Chose ‘cXML’ as its root element.

The problem is that the resulting ‘cXML’ record has missing
*body string types in some of its “leaf” elements (lowest
level tags).

For eg: there is no ‘*body’ element in the following path:
/cXML/Header/From/Credential[0]/Identity

But this path does have a ‘*body’ element:
/cXML/Message/Status/*body

I’m using Developer Version 4.6.1 (943). The server has TN
SP1 and IS SP2 applied.

Why dont you download the cxml package - Ariba on ramp for
webMethods? that has the record structure in there.
Good Luck!

VR - I can’t; the Ariba OnRamp package only supports cXML
1.1. See this lonely posting:
[url=“wmusers.com”]wmusers.com
:frowning:

Okay,
I tried the same and ditto!
There is nothing under some of the child nodes.
I guess somebody goofed up.
Next step would be Tech support I guess?
Good Luck!

Hi VR - Thanks for that dude :-). I have a request open,
but I’ve lost two days development time already (who’d have
thought it would be so difficult to import in a DTD! ).

I had some success with an alternative approach. I looked at
the cXML DTD and found the “no *body” problem occured for
elements with DTD type set to ‘ANY’. It looks like WM
decided to map the ‘ANY’ DTD type to the ‘empty record’ type
on WM platforms. It kind of makes sense, except that it
doesn’t – you can’t do anything useful an WM empty record

  • you can’t map to it, you can’t map from it. Makes you
    wonder, eh? :slight_smile:

Anyway, so I modified the cXML DTD itself [ A big thanks to
Ray Moser for suggesting this approach!] I replaced all the
‘ANY’ types with ‘(#PCDATA)’ string types. Then I imported
the DTD and bingo! … it worked. It created *body elements,
etc. The only problem is that the ‘*body’ it created are now
optional instead of being madatory. This means a call to
recordToDocument with ‘generateRequiredTags’ to ‘true’ does
not generate the required tags. :frowning:

WM have hit this problem before – their WmcXML11 package
from the Ariba Onramp pulls off a similar trick. It does not
have empty records and the *body elements in it are
mandatory as they should be. So I’m not happy WM obviously
solved this same problem but did not publish their
workaround. Grr!

I have a SR open with WM and have told them about my
progress. I’ll keep you updated about this.

And I spent all my time finding this out! [ ]
Good Luck and I will stop working on this now!

“happy WM obviously solved this same problem but did not
publish their workaround.”

My guess is that they didn’t fix the DTD and import it, they
just fixed the record definition afterwards, the result of
which is what is in their OnRamp package. Perhaps the same
would work for you, since the record should never change
(the DTD should never need to be reimported).

1 Like

Thanks VR :slight_smile: So you got the same info too eh? Don’t worry
too much about this - I’m sure it’ll get solved soon.
Infact, it may be solved :

> My guess is … they just fixed the record definition
afterwards

Thanks Rob - I was thinking of doing that and you’re right -
its only 8 substitutions in the DTD. Two elements -
OtherOrderTarget and SupplierPartAuxiliaryID - are a bit
complicated. They appear multiple times in the record, but
aren’t seperated into component parts in WM. This, though,
only causes a problem if data isn’t mapped and
recordToDocument is called.

Cheers!
Sonam