/usr/local/CPAN/CORBA-XMLSchemas/CORBA/XMLSchemas/XsdImportVisitor.pm
#
# Interface Definition Language (OMG IDL CORBA v3.0)
#
# CORBA to WSDL/SOAP Interworking Specification, Version 1.1 February 2005
#
package CORBA::XMLSchemas::XsdImportVisitor;
use strict;
use warnings;
our $VERSION = '2.60';
use CORBA::XMLSchemas::XsdVisitor;
use base qw(CORBA::XMLSchemas::XsdVisitor);
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = {};
bless $self, $class;
my ($parser) = @_;
$self->{standalone} = undef;
$self->{_tns} = 'tns';
$self->{tns} = 'tns:';
$self->{_xsd} = 'xs';
$self->{xsd} = 'xs:';
$self->{_corba} = 'corba';
$self->{corba} = 'corba:';
$self->{symbtab} = $parser->YYData->{symbtab};
$self->{root} = $parser->YYData->{root};
$self->{done_hash} = {};
$self->{num_key} = 'num_inc_xsd';
$self->{need_corba} = undef;
return $self;
}
sub visitSpecification {
my $self = shift;
my ($node, $dom_doc, $dom_parent) = @_;
$self->{dom_doc} = $dom_doc;
my $schema = $self->{dom_doc}->createElement($self->{xsd} . 'schema');
$schema->setAttribute('targetNamespace', 'http://www.omg.org/IDL-Mapped/');
$schema->setAttribute('xmlns:' . $self->{_xsd}, 'http://www.w3.org/2001/XMLSchema');
$schema->setAttribute('xmlns:' . $self->{_corba}, 'http://www.omg.org/IDL-WSDL/1.0/');
$schema->setAttribute('xmlns:' . $self->{_tns}, 'http://www.omg.org/IDL-Mapped/');
$schema->setAttribute('elementFormDefault', 'qualified');
$schema->setAttribute('attributeFormDefault', 'unqualified');
$dom_parent->appendChild($schema);
if (exists $node->{list_import}) {
foreach (@{$node->{list_import}}) {
$_->visit($self, $schema);
}
}
foreach (@{$node->{list_decl}}) {
$self->_get_defn($_)->visit($self, $schema);
}
}
1;