Function: rng-ipattern-start-tag-possible-p

rng-ipattern-start-tag-possible-p is a byte-compiled function defined in rng-match.el.gz.

Signature

(rng-ipattern-start-tag-possible-p IPATTERN)

Source Code

;; Defined in /usr/src/emacs/lisp/nxml/rng-match.el.gz
(defun rng-ipattern-start-tag-possible-p (ipattern)
  (let ((type (rng--ipattern-type ipattern)))
    (cond ((memq type '(after one-or-more))
	   (rng-ipattern-start-tag-possible-p
	    (rng--ipattern-child ipattern)))
	  ((memq type '(choice interleave))
	   (let ((members (rng--ipattern-child ipattern))
		 (possible nil))
	     (while (and members (not possible))
	       (setq possible
		     (rng-ipattern-start-tag-possible-p (car members)))
	       (setq members (cdr members)))
	     possible))
	  ((eq type 'group)
	   (let ((members (rng--ipattern-child ipattern))
		 (possible nil))
	     (while (and members (not possible))
	       (setq possible
		     (rng-ipattern-start-tag-possible-p (car members)))
	       (setq members
		     (and (rng--ipattern-nullable (car members))
			  (cdr members))))
	     possible))
	  ((eq type 'element)
	   (not (eq (rng-element-get-child ipattern)
		    rng-not-allowed-ipattern)))
	  (t nil))))