首先,osgi遵循java对manifest的语法规定, 详见 jar中的manifest文件语法
对于name-value pair中的value部分, 用逗号可以分隔多个子句.下面的例子value部分就是由三个子句构成的:
Property-Name: clause1, clause2, clause3
对于每个子句,还可以进一步分成一个target和若干个name-value pair.下面的例子value部分由三个子句构成,每个子句都有个targetn,后面跟着一个或多个name-value pair.
Property-Name: target1; parameter1=value1; parameter2=value2,
target2; parameter1=value1; parameter2=value2,
target3; parameter1=value1; parameter2=value2
每个子句中的name-value pair叫做parameter, parameter分为两种类型:属性attribute和指令directive.
指令directive的parameter用(:=)来分隔;
属性attribute的parameter用(=)来分隔;
下面的例子中即包含指令类型的parameter,又包含属性类型的parameter
Property-Name: target1; dir1:=value1; attr1=value2,
target2; dir1:=value1; attr1=value2,
target3; dir1:=value1; attr1=value2
parameter中的value不能包含空格和其他分隔字符(;,等),如果包含需要进行转义处理;
如果多个target有相同的指令和属性,为了避免重复,可以简写,下面的例子中 target1和target2有相同的parameter.
Property-Name: target1; target2; dir1:=value1; attr1=value2