Adobe 0046100128056 Scripting Guide - Page 182

Changing structure during iteration, Deleting an ancestor XML element

Page 182 highlights

CHAPTER 13: XML Rules Overview 182 function NormalRule(){ this.name = "NormalRule"; //XPath will match on every part_number XML element in the XML structure. this.xpath = "//XMLElement"; // Define the apply function. this.apply = function(myElement, myRuleProcessor){ app.documents.item(0).stories.item(0).insertionPoints.item(-1).contents = myElement.xmlAttributes.item(0).value + "\r"; return false; } //End of apply function } function ProcessChildrenRule(){ this.name = "ProcessChildrenRule"; //XPath will match on every part_number XML element in the XML structure. this.xpath = "//XMLElement"; // Define the apply function. this.apply = function(myElement, myRuleProcessor){ __processChildren(myRuleProcessor); app.documents.item(0).stories.item(0).insertionPoints.item(-1).contents = myElement.xmlAttributes.item(0).value + "\r"; return false; } //End of apply function } Root 1 19 2 B 18 14 16 BA 3 5 BB BC 13 15 17 7 BAA BAB 4 6 BAC 8 12 10 BACA BACB 9 11 Changing structure during iteration When an XML-rules processor finds a matching XML element and applies an XML rule, the rule can change the XML structure of the document. This can conflict with the process of applying other rules, if the affected XML elements in the structure are part of the current path of the XML-rules processor. To prevent errors that might cause the XML-rules processor to become invalid, the following limitations are placed on XML structure changes you might make within an XML rule: X Deleting an ancestor XML element - To delete an ancestor XML element of the matched XML element, create a separate rule that matches and processes the ancestor XML element.

  • 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
182
function NormalRule(){
this.name = "NormalRule";
//XPath will match on every part_number XML element in the XML structure.
this.xpath = "//XMLElement";
// Define the apply function.
this.apply = function(myElement, myRuleProcessor){
app.documents.item(0).stories.item(0).insertionPoints.item(-1).contents =
myElement.xmlAttributes.item(0).value + "\r";
return false;
} //End of apply function
}
function ProcessChildrenRule(){
this.name = "ProcessChildrenRule";
//XPath will match on every part_number XML element in the XML structure.
this.xpath = "//XMLElement";
// Define the apply function.
this.apply = function(myElement, myRuleProcessor){
__processChildren(myRuleProcessor);
app.documents.item(0).stories.item(0).insertionPoints.item(-1).contents =
myElement.xmlAttributes.item(0).value + "\r";
return false;
} //End of apply function
}
Changing structure during iteration
When an XML-rules processor finds a matching XML element and applies an XML rule, the rule can change
the XML structure of the document. This can conflict with the process of applying other rules, if the
affected XML elements in the structure are part of the current path of the XML-rules processor. To prevent
errors that might cause the XML-rules processor to become invalid, the following limitations are placed on
XML structure changes you might make within an XML rule:
X
Deleting an ancestor XML element
— To delete an ancestor XML element of the matched XML
element, create a separate rule that matches and processes the ancestor XML element.
Root
B
BA
BB
BC
BAA
BAB
BAC
BACA
BACB
5
3
2
1
4
6
7
8
9
10
11
12
13
14
15
17
16
18
19