XML-NewsML_G2

 view release on metacpan or  search on metacpan

lib/XML/NewsML_G2/Writer/News_Item.pm  view on Meta::CPAN

    $self->_create_teaser($cm);

    $root->appendChild($cm);

    my @asserts = $self->_create_asserts();
    $root->appendChild($_) foreach @asserts;
    return;
}

sub _create_content {
    my ( $self, $root ) = @_;

    $root->appendChild( my $cs = $self->create_element('contentSet') );
    my $inlinexml = $self->create_element( 'inlineXML',
        contenttype => 'application/xhtml+xml' );
    my $html = $self->create_element( 'html', _ns => $self->xhtml_ns );
    $html->appendChild( my $head =
            $self->create_element( 'head', _ns => $self->xhtml_ns ) );
    $head->appendChild(
        $self->create_element(
            'title',
            _ns   => $self->xhtml_ns,
            _text => $self->news_item->title
        )
    );
    $inlinexml->appendChild($html);

    $html->appendChild( my $body =
            $self->create_element( 'body', _ns => $self->xhtml_ns ) );

    $body->appendChild(
        $self->create_element(
            'h1',
            _ns   => $self->xhtml_ns,
            _text => $self->news_item->title
        )
    );
    $body->appendChild(
        $self->create_element(
            'h2',
            _ns   => $self->xhtml_ns,
            _text => $self->news_item->subtitle
        )
    ) if $self->news_item->subtitle;

    my @paras =
          $self->news_item->paragraphs
        ? $self->news_item->paragraphs->getChildNodes()
        : ();
    $body->appendChild($_) foreach (@paras);

    $cs->appendChild($inlinexml);
    foreach ( sort keys %{ $self->news_item->remotes } ) {
        my $rc = $self->create_element( 'remoteContent', href => $_ );
        $self->_create_remote_content( $rc, $self->news_item->remotes->{$_} );
        $cs->appendChild($rc);
    }
    foreach ( @{ $self->news_item->inlinedata } ) {
        my %args;
        if ( $_->isa('XML::NewsML_G2::Inline_CData') ) {
            $args{_cdata} = $_->data;
        }
        else {
            $args{_text} = $_->data;
        }
        $args{contenttype} = $_->mimetype if $_->mimetype;
        my $data = $self->create_element( 'inlineData', %args );
        $cs->appendChild($data);
    }
    return;
}

__PACKAGE__->meta->make_immutable;

1;
__END__

=head1 NAME

XML::NewsML_G2::Writer::News_Item - create DOM tree conforming to
NewsML-G2 for News Items

=for test_synopsis
    my ($ni, $sm);

=head1 SYNOPSIS

    my $w = XML::NewsML_G2::Writer::News_Item->new
        (news_item => $ni, scheme_manager => $sm);

    my $p = $w->create_element('p', class => 'main', _text => 'blah');

    my $dom = $w->create_dom();

=head1 DESCRIPTION

This module implements the creation of a DOM tree conforming to
NewsML-G2 for News Items.  Depending on the version of the standard
specified, a version-dependent role will be applied. For the API of
this module, see the documentation of the superclass L<XML::NewsML_G2::Writer>.

=head1 ATTRIBUTES

=over 4

=item news_item

L<XML::NewsML_G2::News_Item> instance used to create the output document

=back

=head1 AUTHOR

Philipp Gortan  C<< <philipp.gortan@apa.at> >>

=head1 LICENCE AND COPYRIGHT

Copyright (c) 2013-2014, APA-IT. All rights reserved.

See L<XML::NewsML_G2> for the license.



( run in 2.199 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )