Hannes Magnusson a écrit :
I guess the peardoc configure.php could be slightly more verbose on
what exactly it is doing.

The '.manual.xml' is one giant file, containing all other XML files
"magically linked" from 'manual.xml'.
What configure.php does it to resolve all entities (recursively) from
'manual.xml' and build a one giant XML file. That file is then saved
as '.manual.xml' and PhD uses that file to render.

The reason why PhD wants to use the "giant version" (.manual.xml) is
because parsing one giant file (rather then resolving the entities
on-the-fly) is at least 20% faster then parsing 'manual.xml'.
Furthermore, since configure.php needs to resolve all the entities to
be able to validate the XML (and against DocBook) you get this 20%
performance boost for free. Other things configure.php does is to
expand XIncludes, which PhD would have to resolve otherwise and it
does minor compact node optimization.

Sure, PhD could add the XMLReader::SUBST_ENTITIES parser flag (and
other things configure.php does) so it would be capable of parsing
'manual.xml', but that will reduce performance and increase memory
usage (quite significantly)...

Admittedly, I haven't benchmarked enabling the flag on a file without
entities (i.e. '.manual.xml') so there very well could be no
performance loss..
But thats the reason behind .manual.xml - configure.php already does
the entity resolving and XInclude work and there is no need to do it
again :)

-Hannes


Thanks again to take time to write this long explain .

Laurent

Reply via email to