Adobe 0046100128056 Scripting Guide - Page 193

XML, method, as shown in the following script from

Page 193 highlights

CHAPTER 13: XML Rules XML Rules Examples 193 main(); function main(){ if (app.documents.length != 0){ var myDocument = app.documents.item(0); var myRuleSet = new Array (new AddAttribute); with(myDocument){ var elements = xmlElements; __processRuleSet(elements.item(0), myRuleSet); } } else{ alert("No open document"); } function AddAttribute(){ this.name = "AddAttribute"; this.xpath = "/devices/device/part_number"; this.apply = function(myElement, myRuleProcessor){ myElement.parent.xmlAttributes.add("part_number", myElement.texts.item(0).contents); return true; } } } In the previous XML rule, we copied the data from an XML element into an XML attribute attached to its parent XML element. Instead, what if we want to move the XML element data into an attribute and remove the XML element itself? Use the convertToAttribute method, as shown in the following script (from the ConvertToAttribute tutorial script): main(); function main(){ if (app.documents.length != 0){ var myDocument = app.documents.item(0); var myRuleSet = new Array (new ConvertToAttribute); with(myDocument){ var elements = xmlElements; __processRuleSet(elements.item(0), myRuleSet); } } else{ alert("No open document"); } //Converts all part_number XML elements to XML attributes. function ConvertToAttribute(){ this.name = "ConvertToAttribute"; this.xpath = "/devices/device/part_number"; // Define the apply function. this.apply = function(myElement, myRuleProcessor){ //Use __skipChildren to prevent the XML rule processor from becoming //invalid when we convert the XML element to an attribute. __skipChildren(myRuleProcessor); //Converts the XML element to an XML attribute of its parent XML element. myElement.convertToAttribute("PartNumber"); return true; } } } To move data from an XML attribute to an XML element, use the convertToElement method, as described in Chapter 12, "XML."

  • 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
193
main();
function main(){
if (app.documents.length != 0){
var myDocument = app.documents.item(0);
var myRuleSet = new Array (new AddAttribute);
with(myDocument){
var elements = xmlElements;
__processRuleSet(elements.item(0), myRuleSet);
}
}
else{
alert("No open document");
}
function AddAttribute(){
this.name = "AddAttribute";
this.xpath = "/devices/device/part_number";
this.apply = function(myElement, myRuleProcessor){
myElement.parent.xmlAttributes.add("part_number",
myElement.texts.item(0).contents);
return true;
}
}
}
In the previous XML rule, we copied the data from an XML element into an XML attribute attached to its
parent XML element. Instead, what if we want to move the XML element data into an attribute and remove
the XML element itself? Use the
convertToAttribute
method, as shown in the following script (from the
ConvertToAttribute tutorial script):
main();
function main(){
if (app.documents.length != 0){
var myDocument = app.documents.item(0);
var myRuleSet = new Array (new ConvertToAttribute);
with(myDocument){
var elements = xmlElements;
__processRuleSet(elements.item(0), myRuleSet);
}
}
else{
alert("No open document");
}
//Converts all part_number XML elements to XML attributes.
function ConvertToAttribute(){
this.name = "ConvertToAttribute";
this.xpath = "/devices/device/part_number";
// Define the apply function.
this.apply = function(myElement, myRuleProcessor){
//Use __skipChildren to prevent the XML rule processor from becoming
//invalid when we convert the XML element to an attribute.
__skipChildren(myRuleProcessor);
//Converts the XML element to an XML attribute of its parent XML element.
myElement.convertToAttribute("PartNumber");
return true;
}
}
}
To move data from an XML attribute to an XML element, use the
convertToElement
method, as described
in
Chapter 12, “XML
.”