Subject:mapper schema problem Author:Kurt Wald Date:04 Sep 2007 09:50 AM
When a target schema is set in the mapper which contains a default namespace as the target namespace, that namespace is always prefixed in the resulting styleshheet.
If the prefix is manually removed in the stylesheet, before making any assignments, to get the unprefixed default namespace behaviour again, the target schema sequence is suddenly broken after a number of correctly established graphical links.
From that point on code resulting from graphical mapping is inserted immediately after the target root element.
I can imagine that this may also partially result from the structure of the target schema which doesn't really follow any of the known design patterns (see uploaded file EFACT_D96A_ORDRSP.xsd).
Subject:mapper schema problem Author:(Deleted User) Date:04 Sep 2007 11:16 AM
Hi Kurt,
the schema you attached declares a target namespace, so the a prefix must be added to the XPath expressions in order to have correct queries. Removing the prefix from the XSLT itself will generate a whole different element, and this it will create a new tree in the target schema.
Can you elaborate why do you think that the code generated by mapper should not have a prefix? Can you attach a sample XSLT?
Subject:mapper schema problem Author:Kurt Wald Date:04 Sep 2007 11:50 AM
Hi Alberto,
a default namespace as target namespace to enable unprefixed instance documents seems to be legal to me.
I uploaded a pefixed and an unprefixed stylesheet version (orders01_ordrsp96a_def.xsl/orders01_ordrsp96a_pre.xsl). The instance documents created (.net) by both stylesheets are valid against the schema.
Subject:mapper schema problem Author:(Deleted User) Date:04 Sep 2007 04:31 PM
Hi Kurt,
the generated XML cannot be valid in both cases: when the http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006 is the default namespace, the UNH element and its children are placed in that namespace too, while when it is associated with the "a" prefix it is in the empty namespace.
Anyhow, if you still want to have the literal elements in the target schema to use a specific prefix (even the default one), you can define the prefix in the xsl:stylesheet root element and mapper will use it whenever it needs to pick one.