Re: DOM loadXML not loading doctype as expected in PHP5
| From: | Christian Stocker | Date: | Wed, 01 Sep 2004 05:59:06 +0000 |
| Subject: | Re: DOM loadXML not loading doctype as expected in PHP5 | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-195366@lists.php.net to get a copy of this message | ||
On Tue, 31 Aug 2004 11:47:22 -0400, David Numan <dave@guidedvision.com> wrote:
> It worked! Thank you so much!
no problem
> I couldn't find documentation for this anywhere. I think I will add a
> note on the DOM Function page in the php docs.
The properties are unfortunately not documented yet :( And yes, please
just add a User Note for the time being)
chregu
>
> -dave
>
>
>
> On Tue, 2004-08-31 at 01:23, Christian Stocker wrote:
> > On Tue, 31 Aug 2004 00:27:25 -0400, David Numan <dave@guidedvision.com> wrote:
> > > Hi
> > >
> > > I'm working on a project using PHP5 and I'm using the DOM extension
> > > quite heavily. I need to be able to store various character entities
> > > such as $nbsp; and é Note: this is for a custom XML document, not
> > > standard (X)HTML.
> > >
> > > When I load my XML string into my domDocument I've been trying
> > > variations of $doctype1 and $doctype2 below. Here is my code:
> > >
> > > $doctype1 = <<<EODT
> > > <!DOCTYPE page [
> > > <!ENTITY % ISOlat1 PUBLIC "-//W3C//ENTITIES Latin1 for XHTML//EN"
> > >
> > > "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
> > > %ISOlat1;
> > > <!ENTITY % ISOsymbol PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
> > >
> > > "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
> > > %ISOsymbol;
> > > <!ENTITY % ISOspecial PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
> > > "å-ÎN4ÎXõ¼#š
> > > n^http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
> > > %ISOspecial;
> > > ]>
> > > EODT;
> > >
> > > $doctype2 = '<!DOCTYPE page PUBLIC "-"
> > >
> > > "http://gv.ca/dtd/character-entities.dtd">';
> > >
> > > $xml = '<?xml version="1.0"
> > > encoding="UTF-8"?>'.$doctype1.
> > > '<page> </page>';
> > > $dom = new domDocument();
> > > $dom->loadXML($xml);
> > > echo $dom->saveXML();
> > >
> > > The above code works as-is and the is present in the huge output.
> > > However, when I change it to use $doctype2 the is no longer there
> > > and returns the warning "Entity 'nbsp' not defined in Entity, line
> > > 1".
> > > Of course the $doctype2 string is the one I need.
> > >
> > > What am I doing wrong? Why isn't it loading the external entities? Is
> > > there some other way of doing this that I somehow missed? I tested the
> > > exact same xml code using "xmllint -format -loaddtd file.xml" and it
> > > worked fine.
> >
> > try if it works with
> >
> > $dom->resolveExternals = true:
> >
> > before $dom->load()
> >
> > not tested, but I assume it has something to do with not loading
> > external entities
> >
> > chregu
> > >
> > > Tested on Gentoo with PHP 5.0.0 and 5.0.1 with libxml 2.6.11.
> > >
> > > Any ideas would be appreciated.
> > > Thanks,
> > > --
> > > David Numan <dave@guidedvision.com>
> > >
> > > --
> > > PHP General Mailing List (http://www.php.net/)
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> > >
> > >
> --
> David H. Numan, Software Architect
> Guided Vision: Internet Application Construction
> (905) 528-3095 http://guidedvision.com
>
>
--
christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich
phone +41 1 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71
http://www.bitflux.ch | chregu@bitflux.ch | gnupg-keyid
0x5CE1DECB