in reply to Re^2: Generating elements with attributes and contents using XML::Smart
in thread Generating elements with attributes and contents using XML::Smart
The error is in your DTD syntax! You can't have PCDATA as attribute, since PCDATA is only for contents. You should use CDATA.
When you apply_dtd(), if some ELEMENT or ATTRIBUTE is not defined in the DTD it will be removed from the tree! So, type is removed since the line ATTLIST is wrong.
This code will work:
Output:use XML::Smart; my $xml = XML::Smart->new; $xml->{customer}{phone} = "555-1234"; $xml->{customer}{phone}{type} = "home"; $xml->apply_dtd(<<EOF); <?xml version="1.0" ?> <!DOCTYPE customer [ <!ELEMENT customer (phone+)> <!ELEMENT phone (#PCDATA)> <!ATTLIST phone type CDATA #REQUIRED> ]> EOF print $xml->data;
<?xml version="1.0" encoding="iso-8859-1" ?> <?meta name="GENERATOR" content="XML::Smart/1.6.8 Perl/5.006001 [MSWin +32]" ?> <!DOCTYPE customer [ <!ELEMENT customer (phone+)> <!ELEMENT phone (#PCDATA)> <!ATTLIST phone type CDATA #REQUIRED> ]> <customer> <phone type="home">555-1234</phone> </customer>
Graciliano M. P.
"Creativity is the expression of the liberty".
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^4: Generating elements with attributes and contents using XML::Smart
by pfaut (Priest) on Aug 19, 2004 at 14:33 UTC | |
Re^4: Generating elements with attributes and contents using XML::Smart
by pfaut (Priest) on Aug 20, 2004 at 12:23 UTC | |
by gmpassos (Priest) on Sep 01, 2004 at 18:34 UTC |
In Section
Seekers of Perl Wisdom