A test case would be helpful indeed, but I can try guessing.
ns_prefix returns a prefix for the element and that prefix is indeed bound in the XML document
Indeed, the prefix is bound in the XML document. But the newly created element is not part of a document. It's just a single detached element as far as XML::Twig is concerned. So it can't get the namespace information from its parent elements.
I have to think about it a bit, and see what other libraries do, because possible requirements are a bit hard to all satisfy:
- get the namespace method to work on a copied (and maybe cut) element (it doesn't right now as you pointed out)
- get namespaces to work properly when pasting a copied or cut element in a new tree, or a different part of the tree at the moment the prefixes are untouched, so it doesn't work in all cases, but probably does in a lot of real cases)
- not have to output all namespace declarations every time a copied ot cut element is pasted somewhere else
- not slow down cut/copy/paste in cases where namespaces are not used
At the moment you could probably get the namespace information by keeping a link to the original element in the copied document (stick it in an invisible attribute), and get the namespace info from it:
$copied->set_att( '#elt', $elt);
my $namespace= $copied->att( '#elt')->namespace();
In fact I might well use something like that to solve the problem.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.