Adobe 0046100128056 Scripting Guide - Page 202

Creating items with XML rules, static text

Page 202 highlights

CHAPTER 13: XML Rules XML Rules Examples 202 function ProcessPrice(){ this.name = "ProcessPrice"; this.xpath = "/devices/device/price"; this.apply = function(myElement, myRuleProcessor){ var myDocument = app.documents.item(0); with(myElement){ insertTextAsContent("Price: $", XMLElementPosition.beforeElement); //Add a return at the end of the XML element. insertTextAsContent("\r", XMLElementPosition.afterElement); applyParagraphStyle(myDocument.paragraphStyles.item("Price")); } return true; } } } Creating page items with XML rules The following script creates new page items, inserts the content of XML elements in the page items, adds static text, and applies formatting. We include only the relevant XML-rule portions of the script here; for more information, see the complete script (XMLRulesLayout). The first rule creates a new text frame for each "device" XML element: //Creates a new text frame on each page. function ProcessDevice(){ this.name = "ProcessDevice"; this.xpath = "/devices/device"; this.apply = function(myElement, myRuleProcessor){ var myDocument = app.documents.item(0); with(myElement){ insertTextAsContent("\r", XMLElementPosition.afterElement); if(myDocument.pages.item(0).textFrames.length == 0){ myPage = myDocument.pages.item(0); } else{ myPage = myDocument.pages.add(); } var myBounds = myGetBounds(myDocument, myPage); var myTextFrame = placeIntoFrame(myPage, myBounds); myTextFrame.textFramePreferences.firstBaselineOffset = FirstBaseline.leadingOffset; } return true; } } The "ProcessType" rule moves the "type" XML element to a new frame on the page:

  • 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
202
function ProcessPrice(){
this.name = "ProcessPrice";
this.xpath = "/devices/device/price";
this.apply = function(myElement, myRuleProcessor){
var myDocument = app.documents.item(0);
with(myElement){
insertTextAsContent("Price: $", XMLElementPosition.beforeElement);
//Add a return at the end of the XML element.
insertTextAsContent("\r", XMLElementPosition.afterElement);
applyParagraphStyle(myDocument.paragraphStyles.item("Price"));
}
return true;
}
}
}
Creating page items with XML rules
The following script creates new page items, inserts the content of XML elements in the page items, adds
static text, and applies formatting. We include only the relevant XML-rule portions of the script here; for
more information, see the complete script (XMLRulesLayout).
The first rule creates a new text frame for each “device” XML element:
//Creates a new text frame on each page.
function ProcessDevice(){
this.name = "ProcessDevice";
this.xpath = "/devices/device";
this.apply = function(myElement, myRuleProcessor){
var myDocument = app.documents.item(0);
with(myElement){
insertTextAsContent("\r", XMLElementPosition.afterElement);
if(myDocument.pages.item(0).textFrames.length == 0){
myPage = myDocument.pages.item(0);
}
else{
myPage = myDocument.pages.add();
}
var myBounds = myGetBounds(myDocument, myPage);
var myTextFrame = placeIntoFrame(myPage, myBounds);
myTextFrame.textFramePreferences.firstBaselineOffset =
FirstBaseline.leadingOffset;
}
return true;
}
}
The “ProcessType” rule moves the “type” XML element to a new frame on the page: