-
Notifications
You must be signed in to change notification settings - Fork 1
/
ftx.dtd
81 lines (67 loc) · 3.02 KB
/
ftx.dtd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!-- My XML representation of the Fountain format -->
<!-- FTX follows, as closely as it can, the structure implicit in a
Fountain document, but with the structure and semantics explicit
in the document. It further adheres to the rule that character
content represents visible text, such that if all tags
disappeared and only element text remained, the screenplay would
still read correctly, delta formatting. As such, sections
headers, invisible in print per Fountain specification, are
attributes on element-only <section>s, but scene headers and
character extensions ("V.O.", "O.S.") are element text.
FTX is an intermediate format. The expectation is that
screenwriters continue to author in plaintext Fountain. FTX
optimizes for human readability rather than ease of
authoring. FTX prefers unambiguous element names to short
ones. -->
<!-- consider pulling note and bd out of formatting:
they have semantic value in production -->
<!ENTITY % formatting "#PCDATA|b|u|i|note|lyric|bd">
<!ENTITY % scene "action|dialogue|dual-dialogue|synopsis">
<!ENTITY % block "%scene;|scene|transition|section">
<!ELEMENT fountain (title-page?, (%block;|page-break)*)>
<!-- title page -->
<!ELEMENT title-page (key+)>
<!ELEMENT key (value+)>
<!ATTLIST key name CDATA #REQUIRED>
<!ELEMENT value (%formatting;)*>
<!-- semantic structure -->
<!ELEMENT action (%formatting;|center)*>
<!ELEMENT scene (scene-heading, (%scene;)*)>
<!-- "Scene numbers are any alphanumerics (plus dashes and periods)"
so cannot declare ID. -->
<!ATTLIST scene id CDATA #IMPLIED>
<!ELEMENT scene-heading (setting?, location, tod?)>
<!ELEMENT setting (#PCDATA)>
<!ELEMENT location (#PCDATA)>
<!ELEMENT tod (#PCDATA)>
<!ELEMENT dialogue (character, (line|parenthetical)+)>
<!ELEMENT character (name, extension*)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT extension (#PCDATA)>
<!ELEMENT line (%formatting;)*>
<!ELEMENT parenthetical (#PCDATA)>
<!ELEMENT dual-dialogue (dialogue, dialogue)>
<!ELEMENT transition (#PCDATA)>
<!ELEMENT section (%block;)*>
<!-- Section IDs are a Fountainhead definition, so can be more restrictive -->
<!ATTLIST section id ID #IMPLIED>
<!ATTLIST section heading CDATA #REQUIRED>
<!ELEMENT page-break EMPTY>
<!-- non-printing elucidation -->
<!-- "Synopses are optional blocks of text to describe a Section or scene."
Which would naturally make them attributes on <secion> and <scene> but
"They can be located anywhere within the screenplay."-->
<!ELEMENT synopsis (#PCDATA)>
<!-- Notes can span multiple lines. Putting their content into
elements preserves whitespace. -->
<!ELEMENT note (#PCDATA)>
<!-- inline formatting -->
<!ELEMENT center (%formatting;)*>
<!ELEMENT lyric (%formatting;)*>
<!ELEMENT b (%formatting;)*>
<!ELEMENT u (%formatting;)*>
<!ELEMENT i (%formatting;)*>
<!-- Fountahead extension: script breakdown -->
<!ELEMENT bd (%formatting;)*>
<!ATTLIST bd class (character|extra|stunts|fx|sound|vehicle|animal|prop|wardrobe|makeup|other) #REQUIRED>
<!ATTLIST bd idref CDATA #REQUIRED>