X Tutup
Skip to content

Commit 488a4ad

Browse files
author
Steve Canny
committed
docs: document run content feature analysis
1 parent 762cd2c commit 488a4ad

File tree

3 files changed

+146
-36
lines changed

3 files changed

+146
-36
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
2+
Run-level content
3+
=================
4+
5+
A run is the object most closely associated with inline content; text,
6+
pictures, and other items that are flowed between the block-item boundaries
7+
within a paragraph.
8+
9+
main content child elements:
10+
11+
* <w:t>
12+
* <w:br>
13+
* <w:drawing>
14+
* <w:tab>
15+
16+
17+
``Run.clear()`` design notes
18+
----------------------------
19+
20+
Possible strategy:
21+
22+
1. Insert new empty ``<w:r/>`` element before
23+
2. Move ``<w:rPr>`` child to new r element, if there is one
24+
3. Delete initial ``<w:r>``
25+
4. Set self._r of Run to new r element
26+
4. Return self
27+
28+
29+
Schema excerpt
30+
--------------
31+
32+
.. highlight:: xml
33+
34+
::
35+
36+
<xsd:complexType name="CT_R"> <!-- denormalized -->
37+
<xsd:sequence>
38+
<xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
39+
<xsd:group ref="EG_RunInnerContent" minOccurs="0" maxOccurs="unbounded"/>
40+
</xsd:sequence>
41+
<xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/>
42+
<xsd:attribute name="rsidDel" type="ST_LongHexNumber"/>
43+
<xsd:attribute name="rsidR" type="ST_LongHexNumber"/>
44+
</xsd:complexType>
45+
46+
<xsd:group name="EG_RunInnerContent">
47+
<xsd:choice>
48+
<xsd:element name="t" type="CT_Text"/>
49+
<xsd:element name="br" type="CT_Br"/>
50+
<xsd:element name="cr" type="CT_Empty"/>
51+
<xsd:element name="tab" type="CT_Empty"/>
52+
<xsd:element name="ptab" type="CT_PTab"/>
53+
<xsd:element name="sym" type="CT_Sym"/>
54+
<xsd:element name="noBreakHyphen" type="CT_Empty"/>
55+
<xsd:element name="softHyphen" type="CT_Empty"/>
56+
<xsd:element name="fldChar" type="CT_FldChar"/>
57+
<xsd:element name="drawing" type="CT_Drawing"/>
58+
<xsd:element name="object" type="CT_Object"/>
59+
60+
<xsd:element name="footnoteReference" type="CT_FtnEdnRef"/>
61+
<xsd:element name="footnoteRef" type="CT_Empty"/>
62+
<xsd:element name="endnoteReference" type="CT_FtnEdnRef"/>
63+
<xsd:element name="endnoteRef" type="CT_Empty"/>
64+
<xsd:element name="separator" type="CT_Empty"/>
65+
<xsd:element name="continuationSeparator" type="CT_Empty"/>
66+
<xsd:element name="commentReference" type="CT_Markup"/>
67+
<xsd:element name="annotationRef" type="CT_Empty"/>
68+
69+
<xsd:element name="contentPart" type="CT_Rel"/>
70+
<xsd:element name="delText" type="CT_Text"/>
71+
<xsd:element name="instrText" type="CT_Text"/>
72+
<xsd:element name="delInstrText" type="CT_Text"/>
73+
74+
<xsd:element name="dayShort" type="CT_Empty"/>
75+
<xsd:element name="monthShort" type="CT_Empty"/>
76+
<xsd:element name="yearShort" type="CT_Empty"/>
77+
<xsd:element name="dayLong" type="CT_Empty"/>
78+
<xsd:element name="monthLong" type="CT_Empty"/>
79+
<xsd:element name="yearLong" type="CT_Empty"/>
80+
81+
<xsd:element name="pgNum" type="CT_Empty"/>
82+
<xsd:element name="pict" type="CT_Picture"/>
83+
<xsd:element name="ruby" type="CT_Ruby"/>
84+
<xsd:element name="lastRenderedPageBreak" type="CT_Empty"/>
85+
</xsd:choice>
86+
</xsd:group>

docs/dev/analysis/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Feature Analysis
1010
.. toctree::
1111
:maxdepth: 1
1212

13+
features/run-content
1314
features/numbering
1415
features/underline
1516
features/char-style

docs/dev/analysis/schema/ct_p.rst

Lines changed: 59 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,7 @@ Schema excerpt
3232
<xsd:attribute name="rsidRDefault" type="ST_LongHexNumber"/>
3333
</xsd:complexType>
3434

35-
<xsd:complexType name="CT_Text">
36-
<xsd:simpleContent>
37-
<xsd:extension base="s:ST_String">
38-
<xsd:attribute ref="xml:space" use="optional"/>
39-
</xsd:extension>
40-
</xsd:simpleContent>
41-
</xsd:complexType>
42-
43-
<xsd:group name="EG_PContent">
44-
<xsd:choice>
45-
<xsd:group ref="EG_ContentRunContent" minOccurs="0" maxOccurs="unbounded"/>
46-
<xsd:element name="fldSimple" type="CT_SimpleField" minOccurs="0" maxOccurs="unbounded"/>
47-
<xsd:element name="hyperlink" type="CT_Hyperlink"/>
48-
<xsd:element name="subDoc" type="CT_Rel"/>
49-
</xsd:choice>
50-
</xsd:group>
51-
52-
<xsd:group name="EG_ContentRunContent">
35+
<xsd:group name="EG_PContent"> <!-- denormalized -->
5336
<xsd:choice>
5437
<xsd:element name="customXml" type="CT_CustomXmlRun"/>
5538
<xsd:element name="smartTag" type="CT_SmartTagRun"/>
@@ -58,6 +41,38 @@ Schema excerpt
5841
<xsd:element name="bdo" type="CT_BdoContentRun"/>
5942
<xsd:element name="r" type="CT_R"/>
6043
<xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
44+
<xsd:element name="fldSimple" type="CT_SimpleField"/>
45+
<xsd:element name="hyperlink" type="CT_Hyperlink"/>
46+
<xsd:element name="subDoc" type="CT_Rel"/>
47+
</xsd:choice>
48+
</xsd:group>
49+
50+
<xsd:group name="EG_RunLevelElts">
51+
<xsd:choice>
52+
<xsd:element name="proofErr" type="CT_ProofErr"/>
53+
<xsd:element name="permStart" type="CT_PermStart"/>
54+
<xsd:element name="permEnd" type="CT_Perm"/>
55+
<xsd:element name="bookmarkStart" type="CT_Bookmark"/>
56+
<xsd:element name="bookmarkEnd" type="CT_MarkupRange"/>
57+
<xsd:element name="moveFromRangeStart" type="CT_MoveBookmark"/>
58+
<xsd:element name="moveFromRangeEnd" type="CT_MarkupRange"/>
59+
<xsd:element name="moveToRangeStart" type="CT_MoveBookmark"/>
60+
<xsd:element name="moveToRangeEnd" type="CT_MarkupRange"/>
61+
<xsd:element name="commentRangeStart" type="CT_MarkupRange"/>
62+
<xsd:element name="commentRangeEnd" type="CT_MarkupRange"/>
63+
<xsd:element name="customXmlInsRangeStart" type="CT_TrackChange"/>
64+
<xsd:element name="customXmlInsRangeEnd" type="CT_Markup"/>
65+
<xsd:element name="customXmlDelRangeStart" type="CT_TrackChange"/>
66+
<xsd:element name="customXmlDelRangeEnd" type="CT_Markup"/>
67+
<xsd:element name="customXmlMoveFromRangeStart" type="CT_TrackChange"/>
68+
<xsd:element name="customXmlMoveFromRangeEnd" type="CT_Markup"/>
69+
<xsd:element name="customXmlMoveToRangeStart" type="CT_TrackChange"/>
70+
<xsd:element name="customXmlMoveToRangeEnd" type="CT_Markup"/>
71+
<xsd:element name="ins" type="CT_RunTrackChange"/>
72+
<xsd:element name="del" type="CT_RunTrackChange"/>
73+
<xsd:element name="moveFrom" type="CT_RunTrackChange"/>
74+
<xsd:element name="moveTo" type="CT_RunTrackChange"/>
75+
<xsd:group ref="EG_MathContent" minOccurs="0" maxOccurs="unbounded"/>
6176
</xsd:choice>
6277
</xsd:group>
6378

@@ -80,22 +95,22 @@ Schema excerpt
8095
<xsd:element name="instrText" type="CT_Text"/>
8196
<xsd:element name="delInstrText" type="CT_Text"/>
8297
<xsd:element name="noBreakHyphen" type="CT_Empty"/>
83-
<xsd:element name="softHyphen" type="CT_Empty" minOccurs="0"/>
84-
<xsd:element name="dayShort" type="CT_Empty" minOccurs="0"/>
85-
<xsd:element name="monthShort" type="CT_Empty" minOccurs="0"/>
86-
<xsd:element name="yearShort" type="CT_Empty" minOccurs="0"/>
87-
<xsd:element name="dayLong" type="CT_Empty" minOccurs="0"/>
88-
<xsd:element name="monthLong" type="CT_Empty" minOccurs="0"/>
89-
<xsd:element name="yearLong" type="CT_Empty" minOccurs="0"/>
90-
<xsd:element name="annotationRef" type="CT_Empty" minOccurs="0"/>
91-
<xsd:element name="footnoteRef" type="CT_Empty" minOccurs="0"/>
92-
<xsd:element name="endnoteRef" type="CT_Empty" minOccurs="0"/>
93-
<xsd:element name="separator" type="CT_Empty" minOccurs="0"/>
94-
<xsd:element name="continuationSeparator" type="CT_Empty" minOccurs="0"/>
95-
<xsd:element name="sym" type="CT_Sym" minOccurs="0"/>
96-
<xsd:element name="pgNum" type="CT_Empty" minOccurs="0"/>
97-
<xsd:element name="cr" type="CT_Empty" minOccurs="0"/>
98-
<xsd:element name="tab" type="CT_Empty" minOccurs="0"/>
98+
<xsd:element name="softHyphen" type="CT_Empty"/>
99+
<xsd:element name="dayShort" type="CT_Empty"/>
100+
<xsd:element name="monthShort" type="CT_Empty"/>
101+
<xsd:element name="yearShort" type="CT_Empty"/>
102+
<xsd:element name="dayLong" type="CT_Empty"/>
103+
<xsd:element name="monthLong" type="CT_Empty"/>
104+
<xsd:element name="yearLong" type="CT_Empty"/>
105+
<xsd:element name="annotationRef" type="CT_Empty"/>
106+
<xsd:element name="footnoteRef" type="CT_Empty"/>
107+
<xsd:element name="endnoteRef" type="CT_Empty"/>
108+
<xsd:element name="separator" type="CT_Empty"/>
109+
<xsd:element name="continuationSeparator" type="CT_Empty"/>
110+
<xsd:element name="sym" type="CT_Sym" />
111+
<xsd:element name="pgNum" type="CT_Empty"/>
112+
<xsd:element name="cr" type="CT_Empty"/>
113+
<xsd:element name="tab" type="CT_Empty"/>
99114
<xsd:element name="object" type="CT_Object"/>
100115
<xsd:element name="pict" type="CT_Picture"/>
101116
<xsd:element name="fldChar" type="CT_FldChar"/>
@@ -104,7 +119,15 @@ Schema excerpt
104119
<xsd:element name="endnoteReference" type="CT_FtnEdnRef"/>
105120
<xsd:element name="commentReference" type="CT_Markup"/>
106121
<xsd:element name="drawing" type="CT_Drawing"/>
107-
<xsd:element name="ptab" type="CT_PTab" minOccurs="0"/>
108-
<xsd:element name="lastRenderedPageBreak" type="CT_Empty" minOccurs="0" maxOccurs="1"/>
122+
<xsd:element name="ptab" type="CT_PTab"/>
123+
<xsd:element name="lastRenderedPageBreak" type="CT_Empty"/>
109124
</xsd:choice>
110125
</xsd:group>
126+
127+
<xsd:complexType name="CT_Text">
128+
<xsd:simpleContent>
129+
<xsd:extension base="s:ST_String">
130+
<xsd:attribute ref="xml:space" use="optional"/>
131+
</xsd:extension>
132+
</xsd:simpleContent>
133+
</xsd:complexType>

0 commit comments

Comments
 (0)
X Tutup