in reply to Getting XML::Generator to DWIW with the XML declaration

As you can see, i am explicitly setting standalone to undef which, according to the docs, is suppose to prevent the attribute from being printed in the declaration.

I don't see anywhere in the docs that say standalone is a constructor option.

If a dtd was set in the constructor, the standalone attribute of the declaration will be set to 'no' and the doctype declaration will be appended to the XML declartion, otherwise the standalone attribute will be set to 'yes'. This can be overridden by providing a 'standalone' key in @args. If you do not want the standalone attribute to show up, explicitly provide undef as the value.

So just add the doctype

use XML::Generator qw( ); my $gen = XML::Generator->new( conformance => 'strict', encoding => 'UTF-8', dtd => [ 'html', 'PUBLIC', $xhtml_w3c, $xhtml_dtd ], ); print $gen->xml( $gen->html('...') );

Replies are listed 'Best First'.
Re^2: Getting XML::Generator to DWIW with the XML declaration
by jeffa (Bishop) on Nov 07, 2008 at 19:59 UTC

    Perhaps i don't understand XML then. All that I want is this:

    <?xml version="1.0" encoding="UTF-8">
    Without adding a doctype. The example that I am modeling has neither. I am merely trying to produce exactly what the specs i have in front of me specify. At this point i am very inclined to simply prepend this to my XML:
    qq|<?xml version="1.0" encoding="UTF-8" ?>\n|
    Because it works. *shrug* :/

    UPDATE: OK ... I finally see what I am doing wrong now. But, in my defense -- these docs are crappy. The solution for me is to not "wrap" the xml() method around the XML tags, but to instead concat the output of xmldecl() to my XML tags:

    $gen->xmldecl( standalone => undef ) . $gen->foo( $gen->bar() );
    RANT: why can't people understand that examples are worth a thousand words? I make a strict point to clearly show how to use my code in my documentation because the last thing i want is for people to become frustrated and confused and when using my code.

    But it works -- thanks for all your help ikegami!

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)