C
HAPTER
12: XML
Scripting XML Elements     181
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLTag"}
set myRootElement to XML element 1
tell myRootElement
set myXMLElement to make XML element with properties 
{markup tag:myXMLTag}
end tell
set contents of myXMLElement to "This is an XML element containing text."
end tell
end tell
Moving an XML element
You can move XML elements within the XML structure using the 
move
method, as shown in the following 
script fragment (from the MoveXMLElement tutorial script):
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLTag"}
set myRootElement to XML element 1
tell myRootElement
set myXMLElementA to make XML element with properties 
{markup tag:myXMLTag}
set contents of myXMLElementA to "This is XML element A."
set myXMLElementB to make XML element with properties 
{markup tag:myXMLTag}
set contents of myXMLElementB to "This is XML element B."
end tell
move myXMLElementA to after myXMLElementB
end tell
end tell
end tell
Deleting an XML element
Deleting an XML element removes it from both the layout and the XML structure, as shown in the 
following script fragment (from the DeleteXMLElement tutorial script).
tell xml element 1 of XML element 1 of myDocument to delete
Duplicating an XML element
When you duplicate an XML element, the new XML element appears immediately after the original XML 
element in the XML structure, as shown in the following script fragment (from the DuplicateXMLElement 
tutorial script):
How to convert pdf to tiff on - application SDK tool:C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
www.rasteredge.com
How to convert pdf to tiff on - application SDK tool:VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.net, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
www.rasteredge.com
C
HAPTER
12: XML
Scripting XML Elements     182
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLTag"}
set myRootElement to XML element 1
tell myRootElement
set myXMLElementA to make XML element with properties 
{markup tag:myXMLTag}
set contents of myXMLElementA to "This is XML element A."
set myXMLElementB to make XML element with properties 
{markup tag:myXMLTag}
set contents of myXMLElementB to "This is XML element B."
end tell
duplicate myXMLElementA
end tell
end tell
Removing items from the XML structure
To break the association between a page item or text and an XML element, use the 
untag
method, as 
shown in the following script. The objects are not deleted, but they are no longer tied to an XML element 
(which is deleted). Any content of the deleted XML element becomes associated with the parent XML 
element. If the XML element is the root XML element, any layout objects (text or page items) associated 
with the XML element remain in the document. (For the complete script, see UntagElement.)
set myXMLElement to XML element 1 of XML element 1 of myDocument
tell myXMLElement to untag
Creating an XML comment
XML comments are used to make notes in XML data structures. You can add an XML comment using 
something like the following script fragment (from the MakeXMLComment tutorial script):
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLElement"}
set myRootXMLElement to XML element 1
tell myRootXMLElement
set myXMLElement to make XML element with properties 
{markup tag:myXMLTag}
tell myXMLElement
make XML comment with properties {value:"This is an XML comment."}
end tell
end tell
end tell
end tell
Creating an XML processing instruction
A processing instruction (PI) is an XML element that contains directions for the application reading the 
XML document. XML processing instructions are ignored by InDesign but can be inserted in an InDesign 
XML structure for export to other applications. An XML document can contain multiple processing 
instructions.
An XML processing instruction has two parts, target and value. The following is an example:
application SDK tool:Online Convert PDF file to Tiff. Best free online PDF Tif
Using this .NET PDF to TIFF conversion control, C# developers can render and convert PDF document to TIFF image file with no loss in original file quality.
www.rasteredge.com
application SDK tool:Online Convert PDF file to Word. Best free online PDF Conversion
Download Free Trial. Convert a Tiff/Tif File to PDF. Easy converting! We try to make it as easy as possible to convert your Tiff/Tif files to PDF.
www.rasteredge.com
C
HAPTER
12: XML
Scripting XML Elements     183
<?xml-stylesheet type="text/css" href="generic.css"?>
The following script fragment shows how to add an XML processing instruction (for the complete script, 
see MakeProcessingInstruction):
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myRootXMLElement to XML element 1
tell myRootXMLElement
set myXMLInstruction to make XML instruction with properties
{target:"xml-stylesheet type=\"text/css\"",
data:"href=\"generic.css\""}
end tell
end tell
end tell
Working with XML attributes
XML attributes are “metadata” that can be associated with an XML element. To add an XML attribute to an 
XML element, use something like the following script fragment (from the MakeXMLAttribute tutorial 
script). An XML element can have any number of XML attributes, but each attribute name must be unique 
within the element (that is, you cannot have two attributes named “id”).
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLElement"}
set myRootXMLElement to XML element 1
tell myRootXMLElement
set myXMLElement to make XML element with properties 
{markup tag:myXMLTag}
tell myXMLElement
make XML attribute with properties 
{name:"example_attribute", value:"This is an XML attribute."}
end tell
end tell
end tell
end tell
In addition to creating attributes directly using scripting, you can convert XML elements to attributes. 
When you do this, the text contents of the XML element become the value of an XML attribute added to 
the parent of the XML element. Because the name of the XML element becomes the name of the attribute, 
this method can fail when an attribute with that name already exists in the parent of the XML element. If 
the XML element contains page items, those page items are deleted from the layout.
When you convert an XML attribute to an XML element, you can specify the location where the new XML 
element is added. The new XML element can be added to the beginning or end of the parent of the XML 
attribute. By default, the new element is added at the beginning of the parent element.
You also can specify am XML mark-up tag for the new XML element. If you omit this parameter, the new 
XML element is created with the same XML tag as XML element containing the XML attribute.
The following script shows how to convert an XML element to an XML attribute (for the complete script, 
see ConvertElementToAttribute):
application SDK tool:Online Convert Excel to PDF file. Best free online export xlsx
Download Free Trial. Convert a Excel File to PDF. Easy converting! We try to make it as easy as possible to convert your xlsx/xls files to PDF.
www.rasteredge.com
application SDK tool:C# Create PDF from Tiff Library to convert tif images to PDF in C#
filePath). Description: Convert to PDF/TIFF with specified zoom value and save it on the disk. Parameters: Name, Description, Valid Value.
www.rasteredge.com
C
HAPTER
12: XML
Scripting XML Elements     184
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLElement"}
set myRootXMLElement to XML element 1
end tell
tell myRootXMLElement
set myXMLElement to make XML element with properties 
{markup tag:myXMLTag, contents:"This is content in an XML element."}
end tell
tell myXMLElement
convert to attribute
end tell
end tell
You also can convert an XML attribute to an XML element, as shown in the following script fragment (from 
the ConvertAttributeToElement tutorial script):
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLElement"}
set myRootXMLElement to XML element 1
end tell
tell myRootXMLElement
set myXMLElement to make XML element with properties 
{markup tag:myXMLTag, contents:"This is content in an XML element."}
end tell
tell myXMLElement
convert to attribute
end tell
end tell
Working with XML stories
When you import XML elements that were not associated with a layout element (a story or page item), 
they are stored in an XML story. You can work with text in unplaced XML elements just as you would work 
with the text in a text frame. The following script fragment shows how this works (for the complete script, 
see XMLStory):
application SDK tool:C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
C# PDF - Convert PDF to JPEG in C#.NET. C#.NET PDF to JPEG Converting & Conversion Control. Convert PDF to JPEG Using C#.NET. Add necessary references:
www.rasteredge.com
application SDK tool:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
Convert PDF to HTML. |. Home ›› XDoc.PDF ›› VB.NET PDF: PDF to HTML. Convert PDF to HTML in VB.NET Demo Code. Add necessary references:
www.rasteredge.com
C
HAPTER
12: XML
Adding XML Elements to a Layout     185
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLElement"}
set myRootXMLElement to XML element 1
end tell
tell myRootXMLElement
set myXMLElementA to make XML element with properties 
{markup tag:myXMLTag, contents:"This is a paragraph in an XML story."}
set myXMLElementB to make XML element with properties 
{markup tag:myXMLTag, contents:"This is another paragraph in an XML
story."}
set myXMLElementC to make XML element with properties 
{markup tag:myXMLTag, contents:"This is the third paragraph in an 
example XML story."}
set myXMLElementD to make XML element with properties {markup 
tag:myXMLTag, contents:"This is the last paragraph in the XML story."}
end tell
set myXMLStory to xml story 1 of myDocument
set the point size of text 1 of myXMLStory to 72
end tell
Exporting XML
To export XML from an InDesign document, export either the entire XML structure in the document or one 
XML element (including any child XML elements it contains). The following script fragment shows how to 
do this (for the complete script, see ExportXML):
tell myDocument
export to "yukino:test.xml" format "XML"
end tell
In addition, you can use the 
export
from
selected
property of the 
xml
export
preferences
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):
tell myDocument
set export from selected of xml export preferences to true
select xml element 2 of xml element 1
export to "yukino:selectedXMLElement.xml" format "XML"
set export from selected of xml export preferences to false
end tell
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 
place
xml
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):
application SDK tool:C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
DocumentType.DOCX DocumentType.TIFF. zoomValue, The magnification of the original PDF page size. Description: Convert to DOCX/TIFF with specified resolution and
www.rasteredge.com
application SDK tool:VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
PDF from RTF. Create PDF from Text. PDF Export. Convert PDF to Word (.docx). Convert PDF to Tiff. Convert PDF to HTML. Convert PDF to
www.rasteredge.com
C
HAPTER
12: XML
Adding XML Elements to a Layout     186
tell text frame 1 of page 1 of myDocument
place XML using xml element 1 of myDocument
end tell
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):
tell XML element 1 of XML element 1 of myDocument
markup text frame 1 of page 1 of myDocument
end tell
Placing XML into page items
Another way to associate an XML element with a page item is to use the 
place
into
frame
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):
tell application "Adobe InDesign CS5"
set myDocument to document 1
tell view preferences of myDocument
set horizontal measurement units to points
set vertical measurement units to points
end tell
--place into frame has two parameters:
--on: The page, spread, or master spread on which to create the frame
--geometric bounds: The bounds of the new frame (in page coordinates).
tell XML element 1 of myDocument
place into frame on page 1 geometric bounds {72, 72, 288, 288}
end tell
end tell
To associate an XML element with an inline page item (i.e., an anchored object), use the 
place
into
copy
method, as shown in the following script fragment (from the PlaceIntoCopy tutorial script):
tell application "Adobe InDesign CS5"
set myDocument to document 1
set myPage to page 1 of myDocument
set myTextFrame to text frame 1 of myPage
tell XML element 1 of myDocument
set myFrame to place into copy on myPage place point {288, 72} copy item
myTextFrame
end tell
end tell
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 
place
into
inline
copy
method, 
as shown in the following script fragment (from the PlaceIntoInlineCopy tutorial script):
C
HAPTER
12: XML
Adding XML Elements to a Layout     187
tell application "Adobe InDesign CS5"
set myDocument to document 1
set myPage to page 1 of myDocument
tell myPage
set myNewTextFrame to make text frame with properties
{geometric bounds:{72, 72, 96, 144}}
end tell
set myXMLElement to XML element 3 of XML element 1 of myDocument
set myFrame to place into inline copy myXMLElement copy item myNewTextFrame
without retain existing frame
end tell
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):
set myDocument to document 1
set myXMLElement to xml element 2 of xml element 1 of myDocument
set myFrame to place into inline frame myXMLElement place point {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):
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set myXMLTag to make XML tag with properties {name:"myXMLElement"}
set myRootXMLElement to XML element 1
tell myRootXMLElement
set myXMLElementA to make XML element with properties 
{markup tag:myXMLTag}
set contents of myXMLElementA to "This is a paragraph in an XML
story."
set myXMLElementB to make XML element with properties 
{markup tag:myXMLTag}
set contents of myXMLElementB to "This is a another paragraph in an
XML story."
set myXMLElementC to make XML element with properties {markup 
tag:myXMLTag}
set contents of myXMLElementC to "This is the third paragraph in an 
XML story."
set myXMLElementD to make XML element with properties {markup 
tag:myXMLTag}
set contents of myXMLElementD to "This is the last paragraph in an XML 
story."
tell myXMLElementA
--By inserting the return character after the XML element, the
--character becomes part of the content of the parent XML element,
--and not part of the content of the XML element itself.
insert text as content using return position after element
end tell
tell myXMLElementB
insert text as content using "Static text: " position before
element
insert text as content using return position after element
end tell
C
HAPTER
12: XML
Adding XML Elements to a Layout     188
tell myXMLElementC
insert text as content using "Text at the start of an element: " 
position element start
insert text as content using " Text at the end of an element. " 
position element end
end tell
tell myXMLElementD
insert text as content using "Text before the element: " position 
before element
insert text as content using " Text after the element. " position 
after element
end tell
end tell
end tell
end tell
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.
Mapping tags to styles
One of the quickest ways to apply formatting to XML text elements is to use 
XMLImportMaps
, also known 
as tag-to-style mapping. When you do this, you can associate a specific XML tag with a paragraph or 
character style. When you use the 
map XML tags to styles 
method of the document, InDesign applies 
the style to the text, as shown in the following script fragment (from the MapTagsToStyles tutorial script):
tell application "Adobe InDesign CS5"
set myDocument to document 1
tell myDocument
--Create a tag to style mapping.
make XML import map with properties {markup tag:"heading_1", 
mapped style:"heading 1"}
make XML import map with properties {markup tag:"heading_2", 
mapped style:"heading 2"}
make XML import map with properties {markup tag:"para_1", 
mapped style:"para 1"}
make XML import map with properties {markup tag:"body_text", 
mapped style:"body text"}
--Map the XML tags to the defined styles.
map XML tags to styles
--Place the story so that you can see the result of the change.
set myPage to page 1
tell page 1
set myTextFrame to make text frame with properties 
{geometric bounds:my myGetBounds(myDocument, myPage)}
set myStory to parent story of myTextFrame
end tell
tell myStory
place XML using XML element 1 of myDocument
end tell
end tell
end tell
C
HAPTER
12: XML
Adding XML Elements to a Layout     189
Mapping styles to tags
When you have formatted text that is not associated with any XML elements, and you want to move that 
text into an XML structure, use style-to-tag mapping, which associates paragraph and character styles with 
XML tags. To do this, use 
XML export map
objects to create the links between XML tags and styles, then 
use the 
map styles to XML tags
method to create the corresponding XML elements, as shown in the 
following script fragment (from the MapStylesToTags tutorial script):
tell application "Adobe InDesign CS5"
set myDocument to document 1
tell myDocument
--Create a tag to style mapping.
make XML export map with properties {markup tag:"heading_1", 
mapped style:"heading 1"}
make XML export map with properties {markup tag:"heading_2", 
mapped style:"heading 2"}
make XML export map with properties {markup tag:"para_1", 
mapped style:"para 1"}
make XML export map with properties {markup tag:"body_text", 
mapped style:"body text"}
--Apply the style to tag mapping.
map styles to XML tags
end tell
end tell
Another approach is simply to have your script create a new XML tag for each paragraph or character style 
in the document, and then apply the style to tag mapping, as shown in the following script fragment (from 
the MapAllStylesToTags tutorial script):
tell application "Adobe InDesign CS5"
set myDocument to document 1
tell myDocument
--Create a tag to style mapping.
repeat with myParagraphStyle in paragraph styles
set myParagraphStyleName to name of myParagraphStyle
set myXMLTagName to my myReplace(myParagraphStyleName, " ", "_")
set myXMLTagName to my myReplace(myXMLTagName, "[", "")
set myXMLTagName to my myReplace(myXMLTagName, "]", "")
set myMarkupTag to make XML tag with properties {name:myXMLTagName}
make XML export map with properties {markup tag:myMarkupTag, 
mapped style:myParagraphStyle}
end repeat
map styles to XML tags
end tell
end tell
Marking up graphics
The following script fragment shows how to associate an XML element with a graphic (for the complete 
script, see MarkingUpGraphics):
C
HAPTER
12: XML
Adding XML Elements to a Layout     190
tell application "Adobe InDesign CS5"
set myDocument to document 1
tell myDocument
set myXMLTag to make xml tag with properties{name:"graphic"}
tell page 1
set myGraphic to place "yukino:test.tif"
--Associate the graphic with a new XML element as you create the
--element
tell XML element 1
set myXMLElement to make XML element with properties
{markup tag:myXMLTag, content:myGraphic}
end tell
end tell
end tell
Applying styles to XML elements
In addition to using tag-to-style and style-to-tag mappings or applying styles to the text and page items 
associated with XML elements, you also can apply styles to XML elements directly. The following script 
fragment shows how to use three methods: 
apply
paragraph
style
apply
character
style
, and 
apply
object
style
. (For the complete script, see ApplyStylesToXMLElements.)
main()
on main()
mySnippet()
end main
on mySnippet()
tell application "Adobe InDesign CS5"
set myDocument to make document
tell myDocument
set horizontal measurement units of view preferences to points
set vertical measurement units of view preferences to points
--Create a series of XML tags.
set myHeading1XMLTag to make XML tag with properties 
{name:"heading_1"}
set myHeading2XMLTag to make XML tag with properties 
{name:"heading_2"}
set myPara1XMLTag to make XML tag with properties {name:"para_1"}
set myBodyTextXMLTag to make XML tag with properties 
{name:"body_text"}
--Create a series of paragraph styles.
set myHeading1Style to make paragraph style with properties 
{name:"heading 1", point size:24}
set myHeading2Style to make paragraph style with properties 
{name:"heading 2", point size:14, space before:12}
set myPara1Style to make paragraph style with properties 
{name:"para 1", point size:12, first line indent:0}
set myBodyTextStyle to make paragraph style with properties 
{name:"body text", point size:12, first line indent:24}
--Create a character style.
set myCharacterStyle to make character style with properties 
{name:"Emphasis", font style:"Italic"}
--Add XML elements.
set myRootXMLElement to XML element 1
tell myRootXMLElement
set myXMLElementA to make XML element with properties {markup 
tag:myHeading1XMLTag, contents:"Heading 1"}
tell myXMLElementA
Documents you may be interested
Documents you may be interested