Problem with loading OAGIS 8.0 XML Schemas in SAP Business C

Hello all,

I am using SAP Business Connector for XML connectivity.
Now I am trying to upload XML Schemas from OAGIS 8.0 and problem that I have is with schemas which have “include schemaLocation” in their body.

SAP Business Connector 4.6 can load schemas which have statement like this:

and OAGIS 8.0 has

<xs:include schemaLocation=“Process.xsd”/>

If I delete “xs:” from OAGIS schemas than I have problem with namespace, so it is not easy solution.

Please advice how to solve this problem.

Best regards,

Gordan Flego

The OAGIS 8.0 issues are supposed to be resolved in webMethods 6.0. Please log this as an issue because webMethod’s is not planning on creating a patch for to add the increased schema functionality to 4.6. If enough of us open tickets it might move up in their priority list.

Just in case you haven’t seen this yet:

webMethods response to OAGIS 8 issues/questions

Our analysis is focused on 2 usage scenarios:

[UC-1] Validate XML Node using IS Schema, created using XML Schema Documents

[UC-2] Create Records (or Flows, Specs, Service I/O Signatures, etc.) using XML Schema Documents

OAGIS Release 8

[Issue 1] XSD Source Packager is the internal component that packages all the schema documents into one bundle for downstream processing. This packager incorrectly resolves relative URIs. OAGIS release 8 uses approximately 300 schema documents and uses lots of relative URIs (and ‘…’ relative URIs). See TRAX entry 1-6T8PD for a fix for this issue in webMethods 6.0.

This is critical for both [UC-1] and [UC-2]. There are simple work arounds: use absolute URI or put all the files in one directory & use simple relative URIs. However, this is very complicated if there are more than 4 to 5 files. OAG release 8 has approximately 300 files. If there is sufficient customer interest, we should consider porting the fix above to IS 4.6.

[Issue 2] Release 8 uses substitution group, a high-end feature of XML
Schema. Release 8 uses this feature heavily.

We support substitution group[1] in [UC-1]. IS type system does not support substitution group. Thus, we cannot support this feature in [UC-2]. IS will not report any problems while creating record, flow, spec, etc. But, IS will create these objects without honoring substitution group.
[1] XML Schema Part 0: Primer Second Edition

Suggested work around for [UC-2]. Using an example,

Lets say there are 3 element declarations - A, B and C

<xs:element name=“A” type=“xs:string”/>
<xs:element name=“B” type=“xs:string” substitutionGroup=“A”/>
<xs:element name=“C” type=“xs:string” substitutionGroup=“A”/>

Where A is the head element and B & C may be substituted for A. Lets declare a complex content using sequence compositor,

xs:sequence
<xs:element ref=“someElement”/>
<xs:element ref=“A”/>
<xs:element ref=“anotherElement”/>
</xs:sequence>

For the above model, A can be either A, B or C. 'Cos, B and C may be
substituted for A. There is a simpler representation for the complex content without using substitution group. That is,

<!�- create a global model group, per substitution group →

<xs:group name=�A�>
xs:choice
<xs:element ref=“A”/>
<xs:element ref=“B”/>
<xs:element ref=“C”/>
xs:choice
</xs:group>

<!�- use this global model group by reference in complex content →

xs:sequence
<xs:element ref=“someElement”/>

<xs:group ref=�A�/>
<xs:element ref="anotherElement"/>

</xs:sequence>

This is the work around.

A simple data sheet that enumerates IS (4.6) support for XML Schema is available (see schema-data-sheet.html). Highlighted items are problem areas for [UC-2].

[Issue 3] Release 8 uses recursive complex types. This is legal per XML
Schema and we have support in [UC-1]. However, it impacts [UC-2] and is a known issue. Here is a sample from release 8 that uses recursive complex types.

Source - line 1832, OAGIS8.0\OAGIS\Resources\Components.xsd
<xs:complexType name=“OrganizationalUnit”>
xs:annotation
<xs:documentation source=“http://www.openapplications.org/oagis”>
A fully generic means of identifying an organizational unit. Can
be an actual business unit (at any level) or an area of
responsibility. Each is described with respect to others,
via the ProximalUnit construct.</xs:documentation>
</xs:annotation>
xs:sequence
<xs:element name=“Id” type=“OrganizationalUnitId” minOccurs=“0”/>
<xs:element name=“Function” type=“OrganizationalUnitName”
minOccurs=“0”/>
<xs:element name=“Name” type=“Name” minOccurs=“0”/>
<xs:element name=“RelatedUnit” type=“RelatedUnitType”
^^^^^^^^^^^^^^^
minOccurs=“0” maxOccurs=“unbounded”/>
<xs:element ref=“UserArea” minOccurs=“0”/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=“RelatedUnitType”>
xs:sequence
<xs:element name=“Relationship” type=“Relationship” minOccurs=“0”>
xs:annotation
<xs:documentation
source=“http://www.openapplications.org/oagis”>Defines the
relationship between this related unit and the preceeding
unit,</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name=“Unit” type=“OrganizationalUnit” minOccurs=“0”/>
^^^^^^^^^^^^^^^^^^
</xs:sequence>
</xs:complexType>

Any suggested work around?

Calls for 2 changes,

[Change 1] Create a new global element decl for ‘RelatedUnit’. That is,

<xs:element name=“RelatedUnit” type=“RelatedUnitType”/>

[Change 2] Within ‘OrganizationUnit’ complex type, replace �RelatedUnit’ local element decl with an element decl that uses the global element decl ‘RelatedUnit’ by reference. That is, replace

<xs:element name="RelatedUnit" type="RelatedUnitType"
                                       ^^^^^^^^^^^^^^^

with

<xs:element ref="RelatedUnit"

[Issue 4] Release 8 uses chameleon include. This is legal per XML Schema and we do not support it. This is a known issue, and is critical for both [UC-1] and [UC-2].

Any suggested work around?

Calls for 1 change,

[Change 1] Explicitly specify the target namespace. Replace one statement,

Line 14, OAGIS8.0\OAGIS\Resources\Verbs\Verbase.xsd
“<xs:schema xmlns:xs=“XML Schema
elementFormDefault=“qualified” attributeFormDefault=“unqualified”>”

with

“<xs:schema xmlns:xs=“XML Schema
xmlns=“http://www.openapplications.org/oagis
targetNamespace=“http://www.openapplications.org/oagis
elementFormDefault=“qualified” attributeFormDefault=“unqualified”>”

I have done a little testing with using to make documents with OAGIS 8.0 Schema’s in WM 6 and WM 6.1 (UC-2 in your terminology). But I still experience errors. For example if I try to make a document out of ProcessPurchaseOrder (using .xsd) the error I’m getting is about the recursive relation in Location:

com.wm.util.LocalizedException:[ISC.0082.9106] Complex type Location {http://www.openapplications.org/oagis} is recursive. webMethods Integration Server does not support creating a document type from an XSD with a recursive complex type.

What is the status of webMethods dealing with OAGIS 8.0?