start moving beyond PMModelItemInfo
[pspp] / detail-xml
1 visualization := [creator date id? lang name style type version]
2     extension?
3     userSource
4     (sourceVariable | derivedVariable)+
5     graph
6     labelFrame+
7     container?
8     style+
9     layerController?
10
11 extension :=
12     [(combinedFootnotes
13       | from helpId
14       | minWidthSet maxWidthSet
15       | showGridline)?
16      numRows?
17      id?]
18       
19 userSource := [id missing?]
20
21 sourceVariable :=
22     [id categorical source sourceName dependsOn? label? labelVariable?]
23     extension* (format | stringFormat)?
24 derivedVariable :=
25     [id categorical value dependsOn?]
26     extension* (format | stringFormat valueMapEntry*)?
27 valueMapEntry := [id? from to]
28
29 format :=
30     [errorCharacter?
31      (minimumFractionDigits maximumFractionDigits)? /* maybe not for baseFormat=dateTime */
32      baseFormat?
33      (baseFormat=dateTime or baseFormat=elapsedTime:
34       dayPadding hourFormat hourPadding minutePadding showDay showSecond)
35      (baseFormat=dateTime only:
36       dayOfMonthPadding dayType monthFormat showMonth showYear yearAbbreviation separatorChars mdyOrder)
37      (baseFormat=elapsedTime only:
38       secondPadding showMillis useGrouping)]
39     (affix+ | relabel)?
40 dateTimeFormat :=
41     [baseFormat
42      (baseFormat=dateTime:
43       dayOfMonthPadding dayPadding dayType hourFormat hourPadding mdyOrder minutePadding monthFormat separatorChars showDay showHour showMinute showMonth showSecond showYear yearAbbreviation)
44      (baseFormat=time:
45       hourFormat hourPadding minutePadding secondPadding showHour showMillis showMinute showSecond)]
46 numberFormat :=
47     [minimumIntegerDigits minimumFractionDigits maximumFractionDigits
48      (scientific small | suffix) useGrouping]
49     affix?
50 stringFormat := (affix | relabel+)?
51 affix := [id? definesReference position suffix value]
52 relabel := [from to]
53
54 graph :=
55     [id cellStyle style]
56     location+ coordinates faceting facetLayout interval
57
58 location := [id? method part (min | target | value)?]
59
60 coordinates := [id]
61 faceting := [id] cross layer*
62 interval := [id style] labeling footnotes?
63 labeling := [id? style? variable] (format | formatting | footnotes)*
64 formatting := [id? variable] formatMapping*
65 formatMapping := [id? from] format
66 footnotes := [id? superscript variable] footnoteMapping+
67 footnoteMapping := [id? from to definesReference]
68
69 cross := [id?] nest nest
70 nest := [id?] variableReference+
71 variableReference := [ref]
72
73 facetLayout := [id?] tableLayout facetLevel+ setCellProperties*
74 tableLayout := [(id style)? fitCells? verticalTitlesInCorner]
75 facetLevel := [id gap level] axis
76
77 axis := [id? style] label? majorTicks
78 label :=
79     [id? style (purpose | textFrameStyle | purpose textFrameStyle)]
80     descriptionGroup | text+
81 majorTicks := [id labelAngle length style tickFrameStyle] gridline?
82 gridline := [id style zOrder]
83
84 descriptionGroup := [id? separator target] description+ text
85 description := [id? name]
86 text := [id? (usesReference | definesReference position)?] <text>
87 paragraph := [id? hangingIndent]
88
89 setCellProperties :=
90     [id? applyToConverse]
91     setMetaData setStyle* setFormat+ union?
92 setMetaData := [id? key target value]
93 setStyle := [id? style target]
94 setFormat :=
95     [id? target reset?]
96     dateTimeFormat | format | numberFormat | stringFormat+
97
98 labelFrame := [id style] location+ label paragraph?
99 container := [id style] extension? location+ labelFrame+
100
101 style :=
102     [id
103      (border-bottom border-bottom-color?)?
104      (border-left border-left-color?)?
105      (border-right border-right-color?)?
106      (border-top border-top-color?)
107      (color? color2)?
108      width?]
109 style :=
110     [id
111      font-family?
112      font-size?
113      font-style?
114      font-weight?
115      labelAngle?
116      labelLocationHorizontal?
117      (labelLocationVertical
118       margin-bottom margin-left margin-right margin-top
119       textAlignment
120       size?)?
121      visible?
122      color? color2?]
123      
124 layer := [id? value variable method? visible?]
125 layerController := [id? source target]
126
127 union := [id] intersect+
128 intersect := [id?] intersectWhere | where+
129 intersectWhere := [id variable variable2]
130 where := [id? include variable]