## net.sf.saxon.pattern
Class UnionPattern

    java.lang.Object
      net.sf.saxon.pattern.Pattern
          net.sf.saxon.pattern.UnionPattern

All Implemented Interfaces:
  Container, java.io.Serializable, javax.xml.transform.SourceLocator

public class UnionPattern
extends Pattern

A pattern formed as the union (or) of two other patterns

See Also:
  Serialized Form

Field Summary
`protected Pattern` `p1`
`protected Pattern` `p2`

Constructor Summary
`UnionPattern(Pattern p1, Pattern p2)` Constructor

Method Summary
`Pattern` `analyze(StaticContext env, ItemType contextItemType)` Type-check the pattern.
`Pattern` `getLHS()` Get the LHS of the union
`int` `getNodeKind()` Determine the types of nodes to which this pattern applies.
`NodeTest` `getNodeTest()` Get a NodeTest that all the nodes matching this pattern must satisfy
`Pattern` `getRHS()` Get the RHS of the union
`boolean` `matches(NodeInfo e, XPathContext context)` Determine if the supplied node matches the pattern
`void` `setLineNumber(int lineNumber)` Override method to set the system ID, so it's set on both halves
`void` `setOriginalText(java.lang.String pattern)` Set the original text
`void` `setSystemId(java.lang.String systemId)` Override method to set the system ID, so it's set on both halves
`Pattern` `simplify(StaticContext env)` Simplify the pattern: perform any context-independent optimisations

Methods inherited from class net.sf.saxon.pattern.Pattern
`getColumnNumber, getDefaultPriority, getDependencies, getExecutable, getFingerprint, getLineNumber, getPublicId, getSystemId, internalMatches, iterateSubExpressions, make, promote, setExecutable, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### p1

    protected Pattern p1

### p2

    protected Pattern p2

Constructor Detail

### UnionPattern

    public UnionPattern(Pattern p1,
                        Pattern p2)

  Constructor

Parameters:
  `p1` - the left-hand operand
  `p2` - the right-hand operand

Method Detail

### simplify

    public Pattern simplify(StaticContext env)
                     throws XPathException

  Simplify the pattern: perform any context-independent optimisations

  Overrides:
    `simplify` in class `Pattern`
  Returns:
    the optimised Pattern
  Throws:
    `XPathException`

### analyze

    public Pattern analyze(StaticContext env,
                           ItemType contextItemType)
                    throws XPathException

  Type-check the pattern. This is only needed for patterns that contain variable references or function calls.

  Overrides:
    `analyze` in class `Pattern`
  Returns:
    the optimised Pattern
  Throws:
    `XPathException`

### setOriginalText

    public void setOriginalText(java.lang.String pattern)

  Set the original text

  Overrides:
    `setOriginalText` in class `Pattern`

### matches

    public boolean matches(NodeInfo e,
                           XPathContext context)
                    throws XPathException

  Determine if the supplied node matches the pattern

  Specified by:
    `matches` in class `Pattern`
  Parameters:
    `e` - the node to be compared
    `context` - The dynamic context. Only relevant if the pattern uses variables, or contains calls on functions such as document() or key().
  Returns:
    true if the node matches either of the operand patterns
  Throws:
    `XPathException`

### getNodeKind

    public int getNodeKind()

  Determine the types of nodes to which this pattern applies. Used for optimisation. For patterns that match nodes of several types, return Node.NODE

  Overrides:
    `getNodeKind` in class `Pattern`
  Returns:
    the type of node matched by this pattern. e.g. Node.ELEMENT or Node.TEXT

### getNodeTest

    public NodeTest getNodeTest()

  Get a NodeTest that all the nodes matching this pattern must satisfy

  Specified by:
    `getNodeTest` in class `Pattern`

### getLHS

    public Pattern getLHS()

  Get the LHS of the union

### getRHS

    public Pattern getRHS()

  Get the RHS of the union

### setSystemId

    public void setSystemId(java.lang.String systemId)

  Override method to set the system ID, so it's set on both halves

  Overrides:
    `setSystemId` in class `Pattern`

### setLineNumber

    public void setLineNumber(int lineNumber)

  Override method to set the system ID, so it's set on both halves

  Overrides:
    `setLineNumber` in class `Pattern`