XML-API
view release on metacpan or search on metacpan
$x->_comment($comment)
Add an XML comment to $x. Is almost the same as this:
$x->_raw("\n<!--");
$x->_raw($content);
$x->_raw('-->')
Except that indentation is correct. Any occurences of '--' in $content
will be replaced with '- -'.
$x->_cdata($content)
A shortcut for $x->_raw("\n<![CDATA[", $content, " ]]>");
$x->_css($content )
Adds $content inside a pair of CDATA tags which are encapsulated inside
CSS comments. Similar to:
$x->_raw('/*<![CDATA[*/ '. $content .' /*]]>*/');
$x->_javascript($script )
A shortcut for adding $script inside a pair of <script
example/xml-api.cgi view on Meta::CPAN
my $lsrc = length($src);
my $rsrc = $x->_fast_string;
my $lrsrc = length($rsrc);
my $hsrc = $h->_as_string;
my $lhsrc = length($hsrc);
$x->hr;
$x->p("The source of this page is $lsrc bytes:");
$x->pre_open( -style => 'color: #005555; background-color: #cfcfcf;' );
$x->_cdata($src);
$x->pre_close;
$x->p("The reduced source of this page is $lrsrc bytes:");
$x->pre_open( -style => 'color: #005555; background-color: #cfcfcf;' );
$x->_cdata($rsrc);
$x->pre_close;
print "Content-Type: application/xhtml+xml\n\n";
print $x . "\n";
lib/XML/API.pm view on Meta::CPAN
sub as_string {
my $self = shift;
my $indent = shift || '';
my $growindent = shift || '';
if ( $self->{comment} ) {
return $indent . '<!-- ' . $self->{comment} . ' -->';
}
if ( $self->{cdata} ) {
return $indent . '<![CDATA[' . $self->{cdata} . ']]>';
}
if ( !@{ $self->{contents} } ) {
return
$indent . '<'
. ( $self->{ns} ? $self->{ns} . ':' : '' )
. $self->{element}
. $self->attrs_as_string . ' />';
}
lib/XML/API.pm view on Meta::CPAN
}
$str .=
'</' . ( $self->{ns} ? $self->{ns} . ':' : '' ) . $self->{element} . '>';
return $str;
}
sub fast_string {
my $self = shift;
$self->{comment} && return '';
$self->{cdata} && return '<![CDATA[' . $self->{cdata} . ']]>';
return
'<'
. ( $self->{ns} ? $self->{ns} . ':' : '' )
. $self->{element}
. $self->attrs_as_string . ' />'
unless @{ $self->{contents} };
return
'<'
lib/XML/API.pm view on Meta::CPAN
}
sub _comment {
my $self = shift;
# FIXME: should escape?
$self->_raw( XML::API::Element->new( comment => join( '', @_ ) ) );
return;
}
sub _cdata {
my $self = shift;
$self->_raw( XML::API::Element->new( cdata => join( '', @_ ) ) );
return;
}
sub _css {
my $self = shift;
my $content = shift;
if ( $content =~ /\n/s ) {
$self->_raw( '/*<![CDATA[*/' . "\n" . $content . '/*]]>*/' );
}
else {
lib/XML/API.pm view on Meta::CPAN
Add an XML comment to $x. Is almost the same as this:
$x->_raw("\n<!--");
$x->_raw($content);
$x->_raw('-->')
Except that indentation is correct. Any occurences of '--' in $content
will be replaced with '- -'.
=head2 $x->_cdata($content)
A shortcut for $x->_raw("\n<![CDATA[", $content, " ]]>");
=head2 $x->_css($content )
Adds $content inside a pair of CDATA tags which are encapsulated inside
CSS comments. Similar to:
$x->_raw('/*<![CDATA[*/ '. $content .' /*]]>*/');
t/01-Element.t view on Meta::CPAN
isa_ok( $e, 'XML::API::Element' );
is( $e->as_string, '<e />', 'single tag' );
$e->add('content');
is( $e->as_string, '<e>content</e>', 'single tag with content' );
my $c = XML::API::Element->new( comment => 'comment --', );
isa_ok( $c, 'XML::API::Element' );
is( $c->as_string, '<!-- comment - - -->', 'comment' );
my $cdata = XML::API::Element->new( cdata => 'cdata', );
isa_ok( $cdata, 'XML::API::Element' );
is( $cdata->as_string, '<![CDATA[cdata]]>', 'cdata' );
my $c1 = XML::API::Element->new( element => 'c1', );
$c1->add('cn1');
$e->add($c1);
is(
$e->as_string( '', ' ' ),
'<e>content
<c1>cn1</c1>
t/03-XML-API.t view on Meta::CPAN
_ast
_parse
_parse_chunk
_current
_set_id
_goto
_attrs
_set_lang
_langs
_css
_cdata
_javascript
_as_string
_fast_string
/
);
# giving invalid doctype with new
throws_ok {
XML::API->new( doctype => 'notexist' );
}
t/03-XML-API.t view on Meta::CPAN
<c>content</c>
<n attr="1">
<n2>content
<n3 />
</n2>
</n>
<p><raw /><raw /></p>
</e>', 'e c n p escaped and raw content'
);
$n->_cdata('my < CDATA');
#warn $n;
#warn $x;
is(
"$x", '<?xml version="1.0" encoding="UTF-8" ?>
<e>
<c>content</c>
<n attr="1">
<n2>content
( run in 0.741 second using v1.01-cache-2.11-cpan-454fe037f31 )