Adobe 0046100128056 Scripting Guide - Page 194

Applying multiple matching rules

Page 194 highlights

CHAPTER 13: XML Rules XML Rules Examples 194 Applying multiple matching rules When the apply function of an XML rule returns true, the XML-rules processor does not apply any further XML rules to the matched XML element. When the apply function returns false, however, the XML-rules processor can apply other rules to the XML element. The following script shows an example of an XML-rule apply function that returns false. This script contains two rules that will match every XML element in the document. The only difference between them is that the first rule applies a color and returns false, while the second rule applies a different color to every other XML element (based on the state of a variable, myCounter). For the complete script, see ReturningFalse. main(); function main(){ myCounter = 0; if (app.documents.length != 0){ var myDocument = app.documents.item(0); //Define two colors. var myColorA = myDocument.colors.add({model:ColorModel.process, colorValue:[0, 100, 80, 0], name:"ColorA"}); var myColorB = myDocument.colors.add({model:ColorModel.process, colorValue:[100, 0, 80, 0], name:"ColorB"}) var myRuleSet = new Array (new ReturnFalse, new ReturnTrue); with(myDocument){ var elements = xmlElements; __processRuleSet(elements.item(0), myRuleSet); } } else{ alert("No open document"); } //Adds a color to the text of every element in the structure. function ReturnFalse(){ this.name = "ReturnFalse"; //XPath will match on every XML element in the XML structure. this.xpath = "//*"; this.apply = function(myElement, myRuleProcessor){ with(myElement){ myElement.texts.item(0).fillColor = app.documents.item(0).colors.item("ColorA"); } // Leaves the XML element available to further processing. return false; } } //Adds a color to the text of every other element in the structure. function ReturnTrue(){ this.name = "ReturnTrue";

  • 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
XML Rules Examples
194
Applying multiple matching rules
When the
apply
function of an XML rule returns true, the XML-rules processor does not apply any further
XML rules to the matched XML element. When the
apply
function returns false, however, the XML-rules
processor can apply other rules to the XML element. The following script shows an example of an XML-rule
apply
function that returns false. This script contains two rules that will match every XML element in the
document. The only difference between them is that the first rule applies a color and returns false, while
the second rule applies a different color to every other XML element (based on the state of a variable,
myCounter
). For the complete script, see ReturningFalse.
main();
function main(){
myCounter = 0;
if (app.documents.length != 0){
var myDocument = app.documents.item(0);
//Define two colors.
var myColorA = myDocument.colors.add({model:ColorModel.process,
colorValue:[0, 100, 80, 0], name:"ColorA"});
var myColorB = myDocument.colors.add({model:ColorModel.process,
colorValue:[100, 0, 80, 0], name:"ColorB"})
var myRuleSet = new Array (new ReturnFalse,
new ReturnTrue);
with(myDocument){
var elements = xmlElements;
__processRuleSet(elements.item(0), myRuleSet);
}
}
else{
alert("No open document");
}
//Adds a color to the text of every element in the structure.
function ReturnFalse(){
this.name = "ReturnFalse";
//XPath will match on every XML element in the XML structure.
this.xpath = "//*";
this.apply = function(myElement, myRuleProcessor){
with(myElement){
myElement.texts.item(0).fillColor =
app.documents.item(0).colors.item("ColorA");
}
// Leaves the XML element available to further processing.
return false;
}
}
//Adds a color to the text of every other element in the structure.
function ReturnTrue(){
this.name = "ReturnTrue";