Adobe 0046100128056 Scripting Guide - Page 183
Handling multiple matching rules, XPath limitations, Inserting a parent XML element
UPC - 718659087562
View all Adobe 0046100128056 manuals
Add to My Manuals
Save this manual to your list of manuals |
Page 183 highlights
CHAPTER 13: XML Rules Overview 183 X Inserting a parent XML element - To add an ancestor XML element to the matched XML element, do so after processing the current XML element. The ancestor XML element you add is not processed by the XML-rules processor during this rule iteration (as it appears "above" the current element in the hierarchy). X Deleting the current XML element - You cannot delete or move the matched XML element until any child XML elements contained by the element are processed. To make this sort of change, use the __skipChildren function before making the change. X No repetitive processing - Changes to nodes that were already processed will not cause the XML rule to be evaluated again. Handling multiple matching rules When multiple rules match an XML element, the XML-rules processor can apply some or all of the matching rules. XML rules are applied in the order in which they appear in the rule set, up to the point that one of the rule apply functions returns true. In essence, returning true means the element was processed. Once a rule returns true, any other XML rules matching the XML element are ignored. You can alter this behavior and allow the next matching rule to be applied, by having the XML rule apply function return false. When an apply function returns false, you can control the matching behavior of the XML rule based on a condition other than the XPath property defined in the XML rule, like the state of another variable in the script. XPath limitations InDesign's XML rules support a limited subset of the XPath 1.0 specification, specifically including the following capabilities: X Find an element by name, specifying a path from the root; for example, /doc/title. X Find paths with wildcards and node matches; for example, /doc/*/subtree/node(). X Find an element with a specified attribute that matches a specified value; for example, /doc/para[@font='Courier']. X Find an element with a specified attribute that does not match a specified value; for example, /doc/para[@font !='Courier']. X Find a child element by numeric position (but not last()); for example, /doc/para[3]. X Find self or any descendent; for example, //para. X Find comment as a terminal; for example, /doc/comment(). X Find PI by target or any; for example, /doc/processing-instruction('foo'). X Find multiple predicates; for example, /doc/para[@font='Courier'][@size=5][2]. X Find along following-sibling axes; for example, /doc/note/following-sibling::*. Due to the one-pass nature of this implementation, the following XPath expressions are specifically excluded: X No ancestor or preceding-sibling axes, including .., ancestor::, preceding-sibling::.