2.8.2 Plcbkfd

The Plcbkfd structure is a PLC whose data elements are BKFD structures (10 bytes each). Each CP in the Plcbkfd that is not the last CP represents the character position of the start of a bookmark in a Document Part. For every Plcbkfd, there is a corresponding Plcbkld. Each data element in the Plcbkfd is associated in a one-to-one correlation with a data element in the corresponding Plcbkld. The CP corresponding to the data element in the Plcbkld represents the character position of the end of the same bookmark. Constraints upon the CPs inside a Plcbkfd as they relate to the CPs in its corresponding Plcbkld can be found with the description of Plcfbkf, which shares the same constraints in relation to its corresponding Plcfbkl.

The only type of bookmark found in a Plcbkfd is a structured document tag bookmark. When a structured document tag bookmark is created, a character demarcating the start of an arbitrary XML range (see sprmCFSpec) is inserted into the CP stream at the start of the bookmark range. The CP defining the start of a structured document tag bookmark MUST be the offset of that character. As a result, the start CPs of structured document tag bookmarks MUST be unique within their containing PLC.

When a structured document tag bookmark is created, a character demarcating the end of an arbitrary XML range (see sprmCFSpec) is inserted into the CP stream at the end of the bookmark range. The CP defining the limit of a structured document tag bookmark MUST be 1 greater than the CP of that character. As a result, the limit CPs of structured document tag bookmarks MUST be unique within their containing PLC, and the CP specifying the start of a structured document tag bookmark MUST be less than the CP specifying the end of the bookmark by at least 2.

If the range of text spanned by a structured document tag bookmark’s CPs contains the CP defining the start or end of another structured document tag bookmark, then it MUST contain the entire range of text spanned by that other bookmark. If the range of text spanned by a structured document tag bookmark’s CPs contains content from inside a table and content from outside that table, then it MUST contain the entire table, with possible omission of the table’s final end of cell mark and TTP mark. In such case, the final end of cell and TTP mark MUST be omitted if and only if the structured document tag bookmark’s range does not include text following the table’s final TTP mark.

The largest value that a CP marking the start or end of a structured document tag bookmark is allowed to have is the CP representing the end of all document parts.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

aCP (variable)

...

aBKFD (variable)

...

aCP (variable): An array of CPs, each indicating the start of a bookmark in the document.

aBKFD (variable): An array of BKFDs (10 bytes each), each of which specifies additional information about the bookmark starting at the corresponding CP in aCP.