our
@EXPORT_OK
=
qw/$extended $base_parameter $parameters/
;
our
(
$base_parameter
,
$parameters
);
$base_parameter
= {
attrs
=> {
name
=>
'enum:name1,name2'
,
value
=>
'scalar'
,
xmlns
=>
'nsid'
},
elements
=> [],
text
=>
'unless:value'
,
};
sub
addExtra {
my
$extras
= [
$base_parameter
];
return
sub
{
push
@{
$extras
},
@_
if
@_
;
return
$extras
}
}
our
$extended
= addExtra();
$parameters
= {
attrs
=> {
xmlns
=>
'nsid'
},
elements
=> [
[
parameter
=>
$extended
->()],
],
};
package
ExtendedBase1;
use
base
qw/Exporter MyBase/
;
our
@EXPORT_OK
=
qw/$extended $parameters/
;
$extended
->({
attrs
=> {
ext_name
=>
'scalar'
,
ext_value
=>
'scalar'
,
xmlns
=>
'nsid1'
},
elements
=> [],
text
=>
'unless:ext_value'
,
});
package
ExtendedBase2;
our
@EXPORT_OK
=
qw/$extended $parameters/
;
$extended
->({
attrs
=> {
another_name
=>
'scalar'
,
another_value
=>
'scalar'
,
xmlns
=>
'nsid2'
},
elements
=> [],
text
=>
'unless:another_value'
,
});
$base_parameter
->{sql} = {
tableName
=> {
field1
=> {
value
=> [
'value'
,
'text'
],
if
=>
'name:name1'
},
field2
=> {
value
=> [
'value'
,
'text'
],
if
=>
'name:name2'
},
}
};
print
Dumper
$parameters
;
my
$api_builder
= XML::RelaxNG::Compact::PXB->new({
top_dir
=>
'./'
,
datatypes_root
=>
"XMLTypes"
,
project_root
=>
"MyAPI"
,
schema_version
=>
'1.0'
,
test_dir
=>
't'
,
DEBUG
=> 1,
footer
=> POD::Credentials->new({
author
=>
'Joe Doe'
}),
});
$api_builder
->buildAPI({
name
=>
'myParameters'
,
element
=>
$parameters
});
1;