Adobe 0046100128056 Scripting Guide - Page 179

Why use XML rules?, XML-rules programming model, XML-rule sets

Page 179 highlights

CHAPTER 13: XML Rules Overview 179 locate and act on XML elements inside InDesign. Just as an XSLT template uses an XML parser outside InDesign to apply transformations to XML data, InDesign's XML Rules Processor uses XML rules to apply transformations to XML data inside InDesign. Why use XML rules? In prior releases of InDesign, you could not use XPath to navigate the XML structure in your InDesign files. Instead, you needed to write recursive script functions to iterate through the XML structure, examining each element in turn. This was difficult and slow. XML rules makes it easy to find XML elements in the structure, by using XPath and relying on InDesign's XML-rules processors to find XML elements. An XML-rule processor handles the work of iterating through the XML elements in your document, and it can do so much faster than a script. XML-rules programming model An XML rule contains three things: 1. A name (as a string). 2. An XPath statement (as a string). 3. An apply function. The XPath statement defines the location in the XML structure; when the XML rules processor finds a matching element, it executes the apply function defined in the rule. Here is a sample XML rule: function RuleName() { this.name = "RuleNameAsString"; this.xpath = "ValidXPathSpecifier"; this.apply = function (element, ruleSet, ruleProcessor){ //Do something here. //Return true to stop further processing of the XML element return true; }; // end of Apply function } In the above example, RuleNameAsString is the name of the rule and matches the RuleName; ValidXPathSpecifier is an XPath expression. Later in this chapter, we present a series of functioning XML-rule examples. NOTE: XML rules support a limited subset of XPath 1.0. See "XPath limitations" on page 183." XML-rule sets An XML-rule set is an array of one or more XML rules to be applied by an XML-rules processor. The rules are applied in the order in which they appear in the array. Here is a sample XML-rule set: var myRuleSet = new Array (new SortByName, new AddStaticText, new LayoutElements, new FormatElements );

  • 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
179
locate and act on XML elements inside InDesign. Just as an XSLT template uses an XML parser outside
InDesign to apply transformations to XML data, InDesign's XML Rules Processor uses XML rules to apply
transformations to XML data inside InDesign.
Why use XML rules?
In prior releases of InDesign, you could not use XPath to navigate the XML structure in your InDesign files.
Instead, you needed to write recursive script functions to iterate through the XML structure, examining
each element in turn. This was difficult and slow.
XML rules makes it easy to find XML elements in the structure, by using XPath and relying on InDesign's
XML-rules processors to find XML elements. An XML-rule processor handles the work of iterating through
the XML elements in your document, and it can do so much faster than a script.
XML-rules programming model
An XML rule contains three things:
1.
A name (as a string).
2.
An
XPath
statement (as a string).
3.
An
apply
function.
The XPath statement defines the location in the XML structure; when the XML rules processor finds a
matching element, it executes the apply function defined in the rule.
Here is a sample XML rule:
function RuleName() {
this.name = "RuleNameAsString";
this.xpath = "ValidXPathSpecifier";
this.apply = function (element, ruleSet, ruleProcessor){
//Do something here.
//Return true to stop further processing of the XML element
return true;
}; // end of Apply function
}
In the above example,
RuleNameAsString
is the name of the rule and matches the
RuleName
;
ValidXPathSpecifier
is an XPath expression. Later in this chapter, we present a series of functioning
XML-rule examples.
N
OTE
:
XML rules support a limited subset of XPath 1.0. See
“XPath limitations” on page 183
.”
XML-rule sets
An XML-rule set is an array of one or more XML rules to be applied by an XML-rules processor. The rules are
applied in the order in which they appear in the array. Here is a sample XML-rule set:
var myRuleSet = new Array (new SortByName,
new AddStaticText,
new LayoutElements,
new FormatElements
);