OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-tc message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Action item: modifier and support for aspect oriented programming


Bob Stayton wrote:

>    e.  Jirka to investigate whether modifier needs to be added to any
>        content models (for synopsis annotations).

Is seems that almost all places where aspects (Java annotations, C# 
attributes) can occur are already covered by modifier element. The only 
missing case (which is probably very rarely used) is aspect belonging 
only to one specific parameter. Thus I propose to change current content 
model of methodparam from:

    db.methodparam =
       element methodparam {
          db.methodparam.attlist,
          db.modifier*,
          db.type?,
          ((db.parameter, db.initializer?) | db.funcparams),
          db.modifier*
       }

to:

    db.methodparam =
       element methodparam {
          db.methodparam.attlist,
          db.modifier*,
          db.type?,
          ((db.modifier*, db.parameter, db.initializer?)
            | db.funcparams),
          db.modifier*
       }

E.g. each parameter can be preceded by an arbitrary number of modifiers.

>    f.  Jirka to investigate whether modifier needs a class attribute.

Some annotations can be multiline and in this case it is desirable to 
preserve whitespace inside modifier. One proposal was to add special 
class attribute which can be used whether modifier is normal or 
"verbatim" one. I think that more easier and elegant solution is to use 
xml:space="preserve" for modifiers with significant whitespace. This way 
we do not add any explicit aspect semantic to modifier element. I think 
that this good because this semantic is too fuzzy and in many cases not 
very different from "older" modifers (static, public, final, ...).

I propose to add optional xml:space attribute to modifer:

  db.modifier.xml.space.attribute =
    attribute xml:space {
       "preserve" | "default"
    }

  db.modifier.attlist =
       db.modifier.role.attribute?
     & db.modifier.xml.space.attribute?
     & db.common.attributes
     & db.common.linking.attributes

The description in TDG can be updated as follows:

Description

A Modifier identifies additional information about some identifier. For 
example, the public or private nature of a OOClass name, or information 
about a static or synchronized nature of a MethodSynopsis, or other 
aspect (known as annotations in Java and attributes in C#).

Processing expectations

Formatted inline. If xml:space="preserve" is specified, formatted as 
block with whitespace preserved.


				Jirka


-- 
------------------------------------------------------------------
   Jirka Kosek     e-mail: jirka@kosek.cz     http://www.kosek.cz
------------------------------------------------------------------
   Profesionální školení a poradenství v oblasti technologií XML.
      Podívejte se na náš nově spuštěný web http://DocBook.cz
        Podrobný přehled školení http://xmlguru.cz/skoleni/
------------------------------------------------------------------
                    Nejbližší termíny školení:
        ** DocBook 15.-17.5.2006 ** XSL-FO 12.-13.6.2006 **
     ** XSLT 23.-26.10.2006 ** XML schémata 13.-15.11.2006 **
------------------------------------------------------------------
   http://xmlguru.cz    Blog mostly about XML for English readers
------------------------------------------------------------------

S/MIME Cryptographic Signature



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]