I mostly just lurk on the list, but...
This type of problem is one of the reasons I created a modified version of CGIDEV2 years ago. I added the ability to have "conditional" sections, basically you have something like this.
/$PaymentInfo
<PaymentInformation>
/?SELECT /%paymentType%/ = "Prepaid"
<Prepaid>
<BillShipper>
<AccountNumber>/%shipperAct#%/</AccountNumber>
</BillShipper>
</Prepaid>
/?WHEN /%paymentType%/ = "BillThirdParty"
<BillThirdParty>
// blah blah blah
</BillThirdParty>
/?WHEN /%paymentType%/ = "FreightCollect"
//etc.....
/?WHEN /%paymentType%/ = "ConsigneeBilled"
//etc....
/?OTHER
?/
</PaymentInformation>
In the wrtSection procedure the conditions are checked and only the valid conditional sections are output. This addition allows a lot more flexibility without having to rewrite/compile/distribute CGI programs. It wasn't too hard to implement. The way I built it the conditional sections are part of a regular sections, and they can be nested. The "/?" "?/" were used to tag the begining and end of the section, and I allowed a condition on the "SELECT" statement as well as on the "WHEN" statements.
Joe Lee
"Lim Hock-Chai" <Lim.Hock-Chai@xxxxxxxxxxxxxxx> 02/18/2009 13:46 >>>
Just to clarify my question a bit.
Here is the portion of xsd that I'm dealing:
<xsd:complexType name="PaymentInformationType">
<xsd:choice>
<xsd:element name="Prepaid" type="PrepaidType"
minOccurs="0"/>
<xsd:element name="BillThirdParty"
type="BillThirdPartyType" minOccurs="0"/>
<xsd:element name="FreightCollect"
type="FreightCollectType" minOccurs="0"/>
<xsd:element name="ConsigneeBilled"
type="xsd:string" minOccurs="0"/>
</xsd:choice>
</xsd:complexType>
In my RPG program, depending on the shipment method selected on the
order, it will determine which child element to used when creating the
PaymentInformation tag. My question is how should I create the template
to handle creating above xml using tools in CGIDEV2?
If I create the template as below:
<PaymentInformation>
/%paymentType%/ ==>
</PaymentInformation>
I would have to code it like below in RPG (Not pretty):
If order.paymentType = 'PRP';
updHtmlVar('paymentType'
:'<Prepaid>'
'<BillShipper>' +
'<AccountNumber>' +
%trim(shipperAct#) +
'</AccountNumber>' +
'</BillShipper>' +
:'</Prepaid>'
. . .
. . .
wrtSection('myXMLSec');
Note: here is the prepaidType definition:
<xsd:complexType name="PrepaidType">
<xsd:sequence>
<xsd:element name="BillShipper"
type="BillShipperType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BillShipperType">
<xsd:choice>
<xsd:element name="AccountNumber"
type="xsd:string" minOccurs="0"/>
<xsd:element name="CreditCard"
type="CreditCardType" minOccurs="0"/>
</xsd:choice>
</xsd:complexType>
"Lim Hock-Chai" <Lim.Hock-Chai@xxxxxxxxxxxxxxx> wrote in message
news:<mailman.4337.1234979882.26163.rpg400-l@xxxxxxxxxxxx>...
How does one normally handle optional xml tag when using CGIDEV2 to
create the xml data?
should I do something like below?
Template:
/$myXMLSec
<Order>
/%myOptTag%/
</Order>
RPG code:
updHtmlVar('myOptTag' :'<MyOptTag>blah blah blah</MyOptTag>');
wrtSection('myXMLSec');
Or is there a better way of handling this?
thanks
----------
As an Amazon Associate we earn from qualifying purchases.