[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [ubl] Looking at the details on the dual schemas idea
Here (attached) is a zipped file with a full set of examples of how 1. global, 2. polymorphism and 3. local equivalent schemas (two options) could work in a generalized, simplified but typical schema architecture such as *might* be applied to UBL/ATG2. I've looked at how customization might work with the global and polymorphism designs but I'll send my examples for that separately. All the best Stephen Green ----- Original Message ----- From: "Stephen Green" <stephen_green@seventhproject.co.uk> To: <ubl@lists.oasis-open.org> Sent: Friday, June 17, 2005 2:24 PM Subject: Re: [ubl] Looking at the details on the dual schemas idea > I've just found that one of the problems > could be solved by having two prefixes > in an instance for the ATG2 schemas, > both with the same prefix. > > e.g. > > <?xml version="1.0" encoding="UTF-8"?> > <SomeDocument xmlns:AIAS="LocalImportedSchema" > xmlns:AIBS="LocalImportedSchema" xmlns="SomeDocument" > xmlns:uac2-0="GlobalImportedAggregateSchema" > xmlns:ubc2-0="GlobalImportedBasicSchema" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="SomeDocument > LocalDocumentSchema.xsd"> > <AIAS:Something> > <AIAS:SomeReference> > <AIBS:SomeID ID="String">normalizedString</AIBS:SomeID> > </AIAS:SomeReference> > </AIAS:Something> > </SomeDocument> > > this would validate against the following set of Local-NDR schemas > > Document schema:- > > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema xmlns="SomeDocument" xmlns:AIAS="LocalImportedSchema" > xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="SomeDocument" > elementFormDefault="qualified" attributeFormDefault="unqualified" > version="1.0"> > <xs:import namespace="LocalImportedSchema" > schemaLocation="LocalImportedSchema.xsd"/> > <xs:element name="SomeDocument" type="AIAS:SomeDocumentType"/> > </xs:schema> > > Common schema (local-NDR):- > > <?xml version="1.0" encoding="UTF-8"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns="LocalImportedSchema" xmlns:udt="SchemaModule" > targetNamespace="LocalImportedSchema" elementFormDefault="qualified" > attributeFormDefault="unqualified" version="test"> > <xsd:import namespace="SchemaModule" > schemaLocation="../Common/UnqualifiedDataType.xsd"/> > <xsd:complexType name="SomethingType"> > <xsd:sequence> > <xsd:element name="SomeReference" type="SomeReferenceType" > minOccurs="0"/> > </xsd:sequence> > </xsd:complexType> > <xsd:complexType name="SomeReferenceType"> > <xsd:sequence> > <xsd:element name="SomeID" type="IdentifierType" minOccurs="0"/> > </xsd:sequence> > </xsd:complexType> > <xsd:complexType name="SomeDocumentType"> > <xsd:sequence> > <xsd:element name="Something" type="SomethingType" minOccurs="0"/> > </xsd:sequence> > </xsd:complexType> > <xsd:complexType name="IdentifierType"> > <xsd:simpleContent> > <xsd:extension base="udt:IdentifierType"/> > </xsd:simpleContent> > </xsd:complexType> > </xsd:schema> > > > The same instance would validate against the corresponding global-NDR > schemas with a change of schemaLocation (here changing the prefixes too > but that is optional of course):- > > > <?xml version="1.0" encoding="UTF-8"?> > <SomeDocument xmlns:AIAS="LocalImportedAggregateSchema" > xmlns:AIBS="LocalImportedBasicSchema" xmlns="SomeDocument" > xmlns:uac2-0="GlobalImportedAggregateSchema" > xmlns:ubc2-0="GlobalImportedBasicSchema" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="SomeDocument > GlobalDocumentSchema.xsd"> > <uac2-0:Something> > <uac2-0:SomeReference> > <ubc2-0:SomeID ID="String">normalizedString</ubc2-0:SomeID> > </uac2-0:SomeReference> > </uac2-0:Something> > </SomeDocument> > > > The global schemas would be:- > > Document schema (global-NDR):- > > <?xml version="1.0" encoding="UTF-8"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns="SomeDocument" > xmlns:uac2-0="GlobalImportedAggregateSchema" > xmlns:ubc2-0="GlobalImportedBasicSchema" > targetNamespace="SomeDocument" > elementFormDefault="qualified" > attributeFormDefault="unqualified" > version="1.0"> > <xsd:import namespace="GlobalImportedAggregateSchema" > schemaLocation="GlobalImportedAggregateSchema.xsd"/> > <xsd:import namespace="GlobalImportedBasicSchema" > schemaLocation="GlobalImportedBasicSchema.xsd"/> > <xsd:element name="SomeDocument" type="SomeDocumentType"/> > <xsd:complexType name="SomeDocumentType"> > <xsd:sequence> > <xsd:element ref="uac2-0:Something" minOccurs="0" maxOccurs="1"/> > </xsd:sequence> > </xsd:complexType> > </xsd:schema> > > Common aggregates schema (global-NDR):- > > > <?xml version="1.0" encoding="UTF-8"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns="GlobalImportedAggregateSchema" > xmlns:ubc2-0="GlobalImportedBasicSchema" > targetNamespace="GlobalImportedAggregateSchema" > elementFormDefault="qualified" attributeFormDefault="unqualified" > version="test"> > <xsd:import namespace="GlobalImportedBasicSchema" > schemaLocation="GlobalImportedBasicSchema.xsd"/> > <xsd:element name="Something" type="SomethingType"/> > <xsd:element name="SomeReference" type="SomeReferenceType"/> > <xsd:complexType name="SomethingType"> > <xsd:sequence> > <xsd:element ref="SomeReference" minOccurs="0"/> > </xsd:sequence> > </xsd:complexType> > <xsd:complexType name="SomeReferenceType"> > <xsd:sequence> > <xsd:element ref="ubc2-0:SomeID" minOccurs="0"/> > </xsd:sequence> > </xsd:complexType> > </xsd:schema> > > Common basics schema (global-NDR):- > > <?xml version="1.0" encoding="UTF-8"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns="GlobalImportedBasicSchema" xmlns:udt="SchemaModule" > targetNamespace="GlobalImportedBasicSchema" elementFormDefault="qualified" > attributeFormDefault="unqualified" version="test"> > <xsd:import namespace="SchemaModule" > schemaLocation="../Common/UnqualifiedDataType.xsd"/> > <xsd:element name="SomeID" type="IdentifierType"/> > <xsd:complexType name="IdentifierType"> > <xsd:simpleContent> > <xsd:extension base="udt:IdentifierType"/> > </xsd:simpleContent> > </xsd:complexType> > </xsd:schema> > > And all using the same datatypes schema:- > > <?xml version="1.0" encoding="UTF-8"?> > <xsd:schema targetNamespace="SchemaModule" xmlns:udt="SchemaModule" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" > attributeFormDefault="unqualified"> > <xsd:complexType name="IdentifierType"> > <xsd:simpleContent> > <xsd:extension base="xsd:normalizedString"> > <xsd:attribute name="ID" type="xsd:normalizedString" use="optional"> > </xsd:attribute> > </xsd:extension> > </xsd:simpleContent> > </xsd:complexType> > </xsd:schema> > > > I could then hope to find that transformations between these are > possible with XSLT > > > Corresponding minor version schemas would hopefully be doable > although transformations would probably require XSLT 2.0 > > > All the best > > Stephen Green > > > > > > > > ----- Original Message ----- > From: "Stephen Green" <stephen_green@seventhproject.co.uk> > To: <ubl@lists.oasis-open.org> > Sent: Wednesday, June 15, 2005 12:14 PM > Subject: [ubl] Looking at the details on the dual schemas idea > > > > Greetings > > > > Just further considering the idea that > > there might be a way to have both global > > (UBL NDR) and local (ATG2 NDR) schema > > sets which each validate the exact same > > instances:- If that were achievable (albeit > > with compromises to the strictness of the > > local rules, which seems unpalatable) I > > had the idea that a stylesheet transformation > > might be a way to generate the local from > > the global schema sets. > > > > I started to demonstrate that the transformation > > seems quite feasible BUT the main problem is > > that local schemas are by nature less > > modular with less room to separate out > > different namespaces. This means that it > > isn't really feasible where the global schemas > > are modularized such as between BBIEs and > > ABIEs. UBL's design has a document in one > > namespace, BBIEs within the document > > structure in another namespace with another > > prefix and ABIEs within the same document > > in another namespace again with another > > prefix again. This distinction between > > namespaces and prefixes from the instance > > point of view can't be represented with local > > design rules without making BBIEs global, in > > a separate module, and putting the document > > complexType in the ABIE module. [See > > example attached]. If this is done then it > > should, I reckon, be a straigtforward (but not > > exactly trivial) matter to transform between > > NDRs. Then the main difficulty left is in > > transforming in minor versions. > > > > [This is where it may become necessary to keep > > to a transformation from global to local rather > > than local to global, due to the greater amount > > of information likely to be contained in global.] > > > > However, the main consideration, it seems to > > me, is not the fact that minor versions may be > > so different and require complexity in XSLT > > transformations (say with XSLT 2.0) but the > > fact that this is all only feasible, as far as I can > > see, with a departure of the local NDR away > > from all local to some local, some global with > > a similar modularity to the global NDR. > > > > All the best > > > > Stephen Green > > > > > > > -------------------------------------------------------------------------- -- > ---- > > > > --------------------------------------------------------------------- > > To unsubscribe from this mail list, you must leave the OASIS TC that > > generates this mail. You may a link to this group and all your TCs in > OASIS > > at: > > https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php > > > --------------------------------------------------------------------- > To unsubscribe from this mail list, you must leave the OASIS TC that > generates this mail. You may a link to this group and all your TCs in OASIS > at: > https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php >
GlobalLocalMajorMinorSchemaDesigns.zzz
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]