Adobe 0046100128056 Scripting Guide - Page 171

Adding XML Elements to a Layout, Associating XML elements with items and text

Page 171 highlights

CHAPTER 12: XML Adding XML Elements to a Layout 171 //Export the entire XML structure in the document. myDocument.exportFile(ExportFormat.xml, File("/c/completeDocumentXML.xml")); //Export a specific XML element and its child XML elements. var myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(-1); myXMLElement.exportFile(ExportFormat.xml, File("/c/partialDocumentXML.xml")); In addition, you can use the exportFromSelected property of the xmlExportPreferences object to export an XML element selected in the user interface. The following script fragment shows how to do this (for the complete script, see ExportSelectedXMLElement): myDocument.select(myDocument.xmlElements.item(0).xmlElements.item(1)); myDocument.xmlExportPreferences.exportFromSelected = true; //Export the entire XML structure in the document. myDocument.exportFile(ExportFormat.xml, File("/c/selectedXMLElement.xml")); myDocument.xmlExportPreferences.exportFromSelected = false; Adding XML Elements to a Layout Previously, we covered the process of getting XML data into InDesign documents and working with the XML structure in a document. In this section, we discuss techniques for getting XML information into a page layout and applying formatting to it. Associating XML elements with page items and text To associate a page item or text with an existing XML element, use the placeXML method. This replaces the content of the page item with the content of the XML element, as shown in the following script fragment (from the PlaceXML tutorial script): myDocument.xmlElements.item(0).placeXML(myDocument.pages.item(0).textFrames.item(0)); To associate an existing page item or text object with an existing XML element, use the markup method. This merges the content of the page item or text with the content of the XML element (if any). The following script fragment shows how to use the markup method (for the complete script, see Markup): myDocument.xmlElements.item(0).xmlElements.item(0).markup(myDocument.pages.item(0).te xtFrames.item(0)); Placing XML into page items Another way to associate an XML element with a page item is to use the placeIntoFrame method. With this method, you can create a frame as you place the XML, as shown in the following script fragment (for the complete script, see PlaceIntoFrame): myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points; myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points; myDocument.viewPreferences.rulerOrigin = RulerOrigin.pageOrigin; //PlaceIntoFrame has two parameters: //On: The page, spread, or master spread on which to create the frame //GeometricBounds: The bounds of the new frame (in page coordinates). myDocument.xmlElements.item(0).xmlElements.item(0).placeIntoFrame(myDocument.pages.it em(0), [72, 72, 288, 288]); To associate an XML element with an inline page item (i.e., an anchored object), use the placeIntoCopy method, as shown in the following script fragment (from the PlaceIntoCopy tutorial script):

  • 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
12: XML
Adding XML Elements to a Layout
171
//Export the entire XML structure in the document.
myDocument.exportFile(ExportFormat.xml, File("/c/completeDocumentXML.xml"));
//Export a specific XML element and its child XML elements.
var myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(-1);
myXMLElement.exportFile(ExportFormat.xml, File("/c/partialDocumentXML.xml"));
In addition, you can use the
exportFromSelected
property of the
xmlExportPreferences
object to
export an XML element selected in the user interface. The following script fragment shows how to do this
(for the complete script, see ExportSelectedXMLElement):
myDocument.select(myDocument.xmlElements.item(0).xmlElements.item(1));
myDocument.xmlExportPreferences.exportFromSelected = true;
//Export the entire XML structure in the document.
myDocument.exportFile(ExportFormat.xml, File("/c/selectedXMLElement.xml"));
myDocument.xmlExportPreferences.exportFromSelected = false;
Adding XML Elements to a Layout
Previously, we covered the process of getting XML data into InDesign documents and working with the
XML structure in a document. In this section, we discuss techniques for getting XML information into a
page layout and applying formatting to it.
Associating XML elements with page items and text
To associate a page item or text with an existing XML element, use the
placeXML
method. This replaces the
content of the page item with the content of the XML element, as shown in the following script fragment
(from the PlaceXML tutorial script):
myDocument.xmlElements.item(0).placeXML(myDocument.pages.item(0).textFrames.item(0));
To associate an existing page item or text object with an existing XML element, use the
markup
method.
This merges the content of the page item or text with the content of the XML element (if any). The
following script fragment shows how to use the
markup
method (for the complete script, see Markup):
myDocument.xmlElements.item(0).xmlElements.item(0).markup(myDocument.pages.item(0).te
xtFrames.item(0));
Placing XML into page items
Another way to associate an XML element with a page item is to use the
placeIntoFrame
method. With
this method, you can create a frame as you place the XML, as shown in the following script fragment (for
the complete script, see PlaceIntoFrame):
myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.rulerOrigin = RulerOrigin.pageOrigin;
//PlaceIntoFrame has two parameters:
//On: The page, spread, or master spread on which to create the frame
//GeometricBounds: The bounds of the new frame (in page coordinates).
myDocument.xmlElements.item(0).xmlElements.item(0).placeIntoFrame(myDocument.pages.it
em(0), [72, 72, 288, 288]);
To associate an XML element with an inline page item (i.e., an anchored object), use the
placeIntoCopy
method, as shown in the following script fragment (from the PlaceIntoCopy tutorial script):