IntelliJ IDEA 2017.2 Help

Language Injection Settings dialog: XML Tag Injection

File | Settings | Editor | Language Injections | /help/img/idea/2017.2/new.png | XML Tag Injection for Windows and Linux
IntelliJ IDEA | Preferences | Editor | Language Injections | /help/img/idea/2017.2/new.png | XML Tag Injection for macOS

Name The name of the injection.
Language The language to be injected.
  • ID. The language ID or name.
  • Prefix. A sequence of characters to be added before the corresponding string value.
  • Suffix. A sequence of characters to be added after the corresponding string value.

The prefix and suffix are optional. For more info, see Using language injection prefixes and suffixes.

XML TagIn this area, define the XML tag which indicates that the text enclosed in this tag should be treated as the selected language.
  • Local name - in this text box, specify the tag name without a namespace prefix. Use regular expressions to specify multiple tag names (name1|name2), case-insensitive names ((?i)tagname matches tagname as well as TagName), etc.
  • Namespace - in this text box, specify the namespace URI of the XML tag.

    The field is optional.

Sub-tagsSelect this check box to include all the subtags recursively.
Advanced In this area, specify additional settings to enable more fine-grained control over the injection process.
  • Value pattern - in this text box, type a regular expression that determines the part of the XML text's value to inject the language into. By using the first capturing group of the pattern as the target for injection, you can configure the procedure to have the language injected only into values that match a certain pattern or into multiple parts that match the pattern.
    [$#]\{(.*?)\} matches the pattern used by the JSP/JSF Expression Language.
    ^javascript:(.*) matches the javascript protocol that can be used in hyperlink-hrefs to execute JavaScript code.
    • Single file - If the option is off, the fragments that match the value pattern are treated separately, as different "files" - e.g. from the fragment editor's viewpoint.
      If the option is on, the corresponding fragments are all merged together to form a single unit, or "file".
      Given the value pattern
      xxx (.+) yyy (.+) zzz
      and the fragment
      xxx select * yyy from family zzz,
      select * and from family are treated as two independent fragments (or "files") if the option is off. If the option is on, select * from family is treated as a single unit or "file".
  • XPath condition - in this text box, specify an XPath expression to address the injection-target more precisely. The context in which the expression is evaluated is the surrounding XML tag.

    It is possible to use the XPath extension functions that are provided by the Jaxen XPath engine, e.g. lower-case(). Also, there are three additional functions that can be used to determine the current file's name, extension, and file type: file-name(), file-ext() and file-type(). Alternatively, a list of available functions can be retrieved through standard code completion.

    For the field to be active, the XPathView + XSLT Support plugin must be enabled.

Last modified: 30 August 2017

See Also