PLJava
view release on metacpan or search on metacpan
basiclib/XML/Smart.pm-txt view on Meta::CPAN
$this->back->pointer->{$key} = $content ;
}
}
}
}
#############
# SET_CDATA #
#############
sub set_cdata {
my $this = shift ;
$this->set_node_type('cdata',@_) ;
}
##############
# SET_BINARY #
##############
sub set_binary {
my $this = shift ;
$this->set_node_type('binary',@_) ;
}
basiclib/XML/Smart.pm-txt view on Meta::CPAN
=head2 save (FILEPATH , OPTIONS)
Save the XML data inside a file.
Accept the same OPTIONS of the method B<I<data()>>.
=head2 set_auto
Define the key to be handled automatically. Soo, data() will define automatically if it's a node, content or attribute.
I<** This method is useful to remove set_node(), set_cdata() and set_binary() changes.>
=head2 set_auto_node
Define the key as a node, and data() will define automatically if it's CDATA or BINARY.
I<** This method is useful to remove set_cdata() and set_binary() changes.>
=head2 set_binary(BOOL)
Define the node as a BINARY content when TRUE, or force to B<not> handle it as a BINARY on FALSE.
Example of node handled as BINARY:
<root><foo dt:dt="binary.base64">PGgxPnRlc3QgAzwvaDE+</foo></root>
Original content of foo (the base64 data):
<h1>test \x03</h1>
=head2 set_cdata(BOOL)
Define the node as CDATA when TRUE, or force to B<not> handle it as CDATA on FALSE.
Example of CDATA node:
<root><foo><![CDATA[bla bla bla <tag> bla bla]]></foo></root>
=head2 set_node(BOOL)
Set/unset the current key as a node (tag).
basiclib/XML/Smart/DTD.pm-txt view on Meta::CPAN
return undef if !$this->{tree}{$tag} ;
return 1 if $this->{tree}{$tag}{any} ;
return undef ;
}
##################
# IS_ELEM_PCDATA #
##################
sub is_elem_pcdata {
my $this = shift ;
my ( $tag ) = @_ ;
return undef if !$this->{tree}{$tag} ;
return 1 if $this->{tree}{$tag}{content} ;
}
#################
# IS_ELEM_EMPTY #
#################
basiclib/XML/Smart/DTD.pm-txt view on Meta::CPAN
if ($$parsed{"$tree"}) { return ;}
++$$parsed{"$tree"} ;
}
if (ref($tree) eq 'HASH') {
if ( $tag ne '' && $dtd->elem_exists($tag) ) {
if ( $dtd->is_elem_empty($tag) ) {
$prev_tree->{$tag} = {} ;
}
elsif ( $dtd->is_elem_pcdata($tag) ) {
if ( ref $prev_tree->{$tag} eq 'HASH' ) { $prev_tree->{$tag}{CONTENT} = '' if !defined $prev_tree->{$tag}{CONTENT} ;}
else { $prev_tree->{$tag} = '' if !defined $prev_tree->{$tag} ;}
}
else {
my @childs_req = $dtd->get_childs_req($tag) ;
foreach my $childs_req_i ( @childs_req ) {
if ( !exists $tree->{$childs_req_i} ) {
$tree->{$childs_req_i} = {} ;
}
}
basiclib/XML/Smart/DTD.pm-txt view on Meta::CPAN
Return I<TRUE> if an element is optional as a child of TAG.
=head2 is_elem_child_req ( TAG , CHILD )
Return I<TRUE> if an element is optional as a child of TAG.
=head2 is_elem_child_uniq ( TAG , CHILD )
Return I<TRUE> if an element is required and unique as a child of TAG.
=head2 is_elem_pcdata ( TAG )
Return I<TRUE> if an element is I<PCDATA> (have content).
=head2 is_elem_empty ( TAG )
Return I<TRUE> if an element is I<EMPTY> (doesn't have attributes, content or children).
=head2 is_elem_multi ( TAG )
Return I<TRUE> if an element can have multiple occurrences globally.
basiclib/XML/Smart/Data.pm-txt view on Meta::CPAN
if ( $cont ne '' ) {
my ( $po , $p1 ) = @$cont ;
my $cont = substr($tags , $po , $p1) ;
my $tp = _data_type($cont) ;
if ( $node_type =~ /^(\w+),(\d+),(\d*)$/ ) {
my ( $node_tp , $node_set ) = ($1,$2) ;
if ( !$node_set ) {
if ( $tp == 3 && $node_tp eq 'cdata' ) { $tp = 0 ;}
elsif ( $tp == 4 && $node_tp eq 'binary' ) { $tp = 0 ;}
}
else {
if ( $node_tp eq 'cdata' ) { $tp = 3 ;}
elsif ( $node_tp eq 'binary' ) { $tp = 4 ;}
}
}
if ( $tp == 3 ) { $cont = "<![CDATA[$cont]]>" ;}
elsif ( $tp == 4 ) {
require XML::Smart::Base64 ;
$cont = &XML::Smart::Base64::encode_base64($cont) ;
$cont =~ s/\s$//s ;
$args .= ' dt:dt="binary.base64"' ;
basiclib/XML/Smart/Data.pm-txt view on Meta::CPAN
}
elsif (ref($value) eq 'SCALAR') { $value = $$value ;}
elsif (ref($value) ne 'ARRAY') { $value = "$value" ;}
}
if ( $do_val && $value ne '') {
my $tp = _data_type($value) ;
if ( $node_type =~ /^(\w+),(\d+),(\d*)$/ ) {
my ( $node_tp , $node_set ) = ($1,$2) ;
if ( !$node_set ) {
if ( $tp == 3 && $node_tp eq 'cdata' ) { $tp = 0 ;}
elsif ( $tp == 4 && $node_tp eq 'binary' ) { $tp = 0 ;}
}
else {
if ( $node_tp eq 'cdata' ) { $tp = 3 ;}
elsif ( $node_tp eq 'binary' ) { $tp = 4 ;}
}
}
if ($tp <= 2) {
$c++ ;
my $cont = $value ; &_add_basic_entity($value) ;
&_add_basic_entity($cont) ;
$tags .= qq`$ident<$tag>$cont</$tag>`;
$v = $cont if $c == 1 ;
( run in 0.573 second using v1.01-cache-2.11-cpan-454fe037f31 )