Hi.

Currently, only the first methodsynoposis for each method  is
xincluded using ...

<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook)
xpointer(id('class.xyz')/db:refentry/db:refsec...@role='description']/descendant::db:methodsynopsis[1])"
/>

In looking at separating __construct/__destruct (constructorsynopsis /
destructorsynopsis), there are sometimes more than 1 way to construct
a class (DatePeriod is the first one I've come across - has 3 ways).

Using [1] introduces the difference between
http://docs.php.net/manual/en/class.dateperiod.php and
http://docs.php.net/manual/en/dateperiod.construct.php.

So ...

<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook)
xpointer(id('class.xyz')/db:refentry/db:refsec...@role='description']/descendant::db:methodsynopsis[1])"
/>

becomes ...

<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook)
xpointer(id('class.xyz')/db:refentry/db:refsec...@role='description']/descendant::db:constructorsynopsis)"
/>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook)
xpointer(id('class.xyz')/db:refentry/db:refsec...@role='description']/descendant::db:methodsynopsis[1])"
/>


Now, in the event that a method has multiple signatures (can't find
one at the moment), the [1] will only pick up the first one for the
main class description page.

So, removing [1] will include all of them.

That's fine until a class is documented to have both an OOP and a
procedural interface.

Now, removing [1] includes both the OOP and the procedural prototypes
in the class description page.

Not good.

Essentially, DocBook doesn't have a way to differentiate between an
OOP and non-OOP "method" (functionsynopsis would have been an option
but for "The content model of this element (funcsynopsis) was designed
specifically to capture the semantics of most C-language function
prototypes (for use in UNIX reference pages)."  [TDG]).

But that would be a significant change.


So, I would like to use a role on the methodsynopsis to indicate OOP
or PROC use. This will allow me to include only the OOP methodsynopsis
via the xinclude in the event of method overloading.

Changing

<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook)
xpointer(id('class.xyz')/db:refentry/db:refsec...@role='description']/descendant::db:methodsynopsis[1])"
/>

to

<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook)
xpointer(id('class.xyz')/db:refentry/db:refsec...@role='description']/descendant::db:constructorsynopsis)"
/>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook)
xpointer(id('class.xyz')/db:refentry/db:refsec...@role='description']/descendant::db:destructorsynopsis)"
/>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook)
xpointer(id('class.xyz')/db:refentry/db:refsec...@role='description']/descendant::db:methodsynops...@role='oop'])"
/>


Richard.

-- 
-----
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling

Reply via email to