← Prev in month ← Prev in thread
Next in thread → Next in month →

Action item: modifier and support for aspect oriented programming

From
Jirka Kosek <>
Date
2006-05-16T19:58:17+00:00
ID
Thread
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:      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
------------------------------------------------------------------
← Prev in month ← Prev in thread
Next in thread → Next in month →