Adobe 0046100128056 Scripting Guide - Page 172

Marking up existing layouts, Inserting text in and around XML text elements

Page 172 highlights

CHAPTER 12: XML Adding XML Elements to a Layout 172 var myPage = myDocument.pages.item(0); var myXMLElement = myDocument.xmlElements.item(0); myXMLElement.placeIntoCopy(myPage, [288, 72], myPage.textFrames.item(0), true); To associate an existing page item (or a copy of an existing page item) with an XML element and insert the page item into the XML structure at the location of the element, use the placeIntoInlineCopy method, as shown in the following script fragment (from the PlaceIntoInlineCopy tutorial script): var myPage = myDocument.pages.item(0); var myTextFrame = myDocument.textFrames.add({geometricBounds:[72, 72, 96, 144]}); var myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(2); myXMLElement.placeIntoInlineCopy(myTextFrame, false); To associate an XML element with a new inline frame, use the placeIntoInlineFrame method, as shown in the following script fragment (from the PlaceIntoInlineFrame tutorial script): var myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(2); //Specify width and height as you create the inline frame. myXMLElement.placeIntoInlineFrame([72, 24]); Inserting text in and around XML text elements When you place XML data into an InDesign layout, you often need to add white space (for example, return and tab characters) and static text (labels like "name" or "address") to the text of your XML elements. The following sample script shows how to add text in and around XML elements (for the complete script, see InsertTextAsContent): var myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(0); //By inserting the return character after the XML element, the character //becomes part of the content of the parent XML element, not of the element itself. myXMLElement.insertTextAsContent("\r", LocationOptions.after); myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(1); myXMLElement.insertTextAsContent("Static text: ", LocationOptions.before); myXMLElement.insertTextAsContent("\r", LocationOptions.after); //To add text inside the element, set the location option to beginning or end. myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(2); myXMLElement.insertTextAsContent("Text at the start of the element: ", LocationOptions.atBeginning); myXMLElement.insertTextAsContent(" Text at the end of the element.", LocationOptions.atEnd); myXMLElement.insertTextAsContent("\r", LocationOptions.after); //Add static text outside the element. myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(3); myXMLElement.insertTextAsContent("Text before the element: ", LocationOptions.before); myXMLElement.insertTextAsContent(" Text after the element.", LocationOptions.after); //To insert text inside the text of an element, work with the text objects contained by the element. myXMLElement.words.item(2).insertionPoints.item(0).contents = "(the third word of) "; Marking up existing layouts In some cases, an XML publishing project does not start with an XML file-especially when you need to convert an existing page layout to XML. For this type of project, you can mark up existing page-layout content and add it to an XML structure. You can then export this structure for further processing by XML tools outside InDesign.

  • 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
172
var myPage = myDocument.pages.item(0);
var myXMLElement = myDocument.xmlElements.item(0);
myXMLElement.placeIntoCopy(myPage, [288, 72], myPage.textFrames.item(0), true);
To associate an existing page item (or a copy of an existing page item) with an XML element and insert the
page item into the XML structure at the location of the element, use the
placeIntoInlineCopy
method,
as shown in the following script fragment (from the PlaceIntoInlineCopy tutorial script):
var myPage = myDocument.pages.item(0);
var myTextFrame = myDocument.textFrames.add({geometricBounds:[72, 72, 96, 144]});
var myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(2);
myXMLElement.placeIntoInlineCopy(myTextFrame, false);
To associate an XML element with a new inline frame, use the
placeIntoInlineFrame
method, as shown
in the following script fragment (from the PlaceIntoInlineFrame tutorial script):
var myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(2);
//Specify width and height as you create the inline frame.
myXMLElement.placeIntoInlineFrame([72, 24]);
Inserting text in and around XML text elements
When you place XML data into an InDesign layout, you often need to add white space (for example, return
and tab characters) and static text (labels like “name” or “address”) to the text of your XML elements. The
following sample script shows how to add text in and around XML elements (for the complete script, see
InsertTextAsContent):
var myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(0);
//By inserting the return character after the XML element, the character
//becomes part of the content of the parent XML element, not of the element itself.
myXMLElement.insertTextAsContent("\r", LocationOptions.after);
myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(1);
myXMLElement.insertTextAsContent("Static text: ", LocationOptions.before);
myXMLElement.insertTextAsContent("\r", LocationOptions.after);
//To add text inside the element, set the location option to beginning or end.
myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(2);
myXMLElement.insertTextAsContent("Text at the start of the element: ",
LocationOptions.atBeginning);
myXMLElement.insertTextAsContent(" Text at the end of the element.",
LocationOptions.atEnd);
myXMLElement.insertTextAsContent("\r", LocationOptions.after);
//Add static text outside the element.
myXMLElement = myDocument.xmlElements.item(0).xmlElements.item(3);
myXMLElement.insertTextAsContent("Text before the element: ", LocationOptions.before);
myXMLElement.insertTextAsContent(" Text after the element.", LocationOptions.after);
//To insert text inside the text of an element, work with the text objects contained by
the element.
myXMLElement.words.item(2).insertionPoints.item(0).contents = "(the third word of) ";
Marking up existing layouts
In some cases, an XML publishing project does not start with an XML file—especially when you need to
convert an existing page layout to XML. For this type of project, you can mark up existing page-layout
content and add it to an XML structure. You can then export this structure for further processing by XML
tools outside InDesign.