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.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.