Adobe 0046100128056 Scripting Guide - Page 184

Error handling, XML rules flow of control, containing the XML-rules processor

Page 184 highlights

CHAPTER 13: XML Rules Overview 184 X No path specifications in predicates; for example, foo[bar/c]. X No last() function. X No text() function or text comparisons; however, you can use InDesign scripting to examine the text content of an XML element matched by a given XML rule. X No compound Boolean predicates; for example, foo[@bar=font or @c=size]. X No relational predicates; for example, foo[@bar < font or @c > 3]. X No relative paths; for example, doc/chapter. Error handling Because XML rules are part of the InDesign scripting model, scripts that use rules do not differ in nature from ordinary scripts, and they benefit from the same error-handling mechanism. When InDesign generates an error, an XML-rules script behaves no differently than any other script. InDesign errors can be captured in the script using whatever tools the scripting language provides to achieve that; for example, try...catch blocks. InDesign does include a series of errors specific to XML-rules processing. An InDesign error can occur at XML-rules processor initialization, when a rule uses a non-conforming XPath specifier (see "XPath limitations" on page 183). An InDesign error also can be caused by a model change that invalidates the state of an XML-rules processor. XML structure changes caused by the operation of XML rules can invalidate the XML-rules processor. These changes to the XML structure can be caused by the script containing the XML-rules processor, another concurrently executing script, or a user action initiated from the user interface. XML structure changes that invalidate an XML-rules processor lead to errors when the XML-rules processor's iteration resumes. The error message indicates which XML structural change caused the error. XML rules flow of control As a script containing XML rules executes, the flow of control passes from the script function containing the XML rules to each XML rule, and from each rule to the functions defined in the glue code. Those functions pass control to the XML-rules processor which, in turn, iterates through the XML elements in the structure. Results and errors are passed back up the chain until they are handled by a function or cause a scripting error. The following diagram provides a simplified overview of the flow of control in an XML-rules script:

  • 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
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209

C
HAPTER
13: XML Rules
Overview
184
X
No path specifications in predicates; for example,
foo[bar/c]
.
X
No
last()
function.
X
No
text()
function or text comparisons; however, you can use InDesign scripting to examine the text
content of an XML element matched by a given XML rule.
X
No compound Boolean predicates; for example,
foo[@bar=font or @c=size]
.
X
No relational predicates; for example,
foo[@bar < font or @c > 3]
.
X
No relative paths; for example,
doc/chapter
.
Error handling
Because XML rules are part of the InDesign scripting model, scripts that use rules do not differ in nature
from ordinary scripts, and they benefit from the same error-handling mechanism. When InDesign
generates an error, an XML-rules script behaves no differently than any other script. InDesign errors can be
captured in the script using whatever tools the scripting language provides to achieve that; for example,
try...catch
blocks.
InDesign does include a series of errors specific to XML-rules processing. An InDesign error can occur at
XML-rules processor initialization, when a rule uses a non-conforming XPath specifier (see
“XPath
limitations” on page 183
). An InDesign error also can be caused by a model change that invalidates the
state of an XML-rules processor. XML structure changes caused by the operation of XML rules can
invalidate the XML-rules processor. These changes to the XML structure can be caused by the script
containing the XML-rules processor, another concurrently executing script, or a user action initiated from
the user interface.
XML structure changes that invalidate an XML-rules processor lead to errors when the XML-rules
processor's iteration resumes. The error message indicates which XML structural change caused the error.
XML rules flow of control
As a script containing XML rules executes, the flow of control passes from the script function containing
the XML rules to each XML rule, and from each rule to the functions defined in the glue code. Those
functions pass control to the XML-rules processor which, in turn, iterates through the XML elements in the
structure. Results and errors are passed back up the chain until they are handled by a function or cause a
scripting error. The following diagram provides a simplified overview of the flow of control in an XML-rules
script: