Rules that flag suboptimal code.
Edit me

AvoidAxisNavigation

Since: PMD 5.0

Priority: Medium (3)

Avoid using the ‘following’ or ‘preceeding’ axes whenever possible, as these can cut through 100% of the document in the worst case. Also, try to avoid using ‘descendant’ or ‘descendant-self’ axes, as if you’re at the top of the Document, it necessarily means cutting through 100% of the document.

This rule is defined by the following XPath expression:

//node()[
  contains(@select,'preceeding::')
  or
  contains(@select,'following::')
  or
  contains(@select,'descendant::')
  or 
  contains(@select,'descendant-self::')
  or (
    ($checkSelfDescendantAbreviation = 'true' )
    and
    contains(@select,'//')
    )
]

Example(s):

<xsl:variable name="var" select="//item/descendant::child"/>

This rule has the following properties:

Name Default Value Description Multivalued
checkSelfDescendantAbreviation false descendant::self abreviation, ‘//’, will also trigger this rule. no

Use this rule by referencing it:

<rule ref="category/xsl/performance.xml/AvoidAxisNavigation" />