Index: /ccr/trunk/p/C0CXPATH.m
===================================================================
--- /ccr/trunk/p/C0CXPATH.m	(revision 569)
+++ /ccr/trunk/p/C0CXPATH.m	(revision 570)
@@ -57,6 +57,7 @@
  Q
  ;
-MKMDX(STK,RTN)	 ; MAKES A MUMPS INDEX FROM THE ARRAY STK
+MKMDX(STK,RTN,INREDUX)	 ; MAKES A MUMPS INDEX FROM THE ARRAY STK
  ; RTN IS SET TO //FIRST/SECOND/THIRD FOR THREE ARRAY ELEMENTS
+ ; REDUX IS A STRING TO REMOVE FROM THE RESULT
  S RTN=""
  N I
@@ -66,4 +67,5 @@
  . I @STK@(0)>1  D  ; SUBSEQUENT ELEMENTS NEED A SEMICOLON
  . . F I=2:1:@STK@(0) S RTN=RTN_"/"_@STK@(I)
+ I $G(INREDUX)'="" S RTN=$P(RTN,INREDUX,1)_$P(RTN,INREDUX,2)
  Q
  ;
@@ -200,5 +202,6 @@
  Q
  ;
-INDEX(IZXML,VDX,NOINX,TEMPLATE) ; parse XML in IZXML and produce an XPATH index
+INDEX(IZXML,VDX,NOINX,TEMPLATE,REDUX) ; parse XML in IZXML and produce 
+ ; an XPATH index; REDUX is a string to be removed from each xpath
  ; GPL 7/14/09 OPTIONALLY GENERATE AN XML TEMPLATE IF PASSED BY NAME
  ; TEMPLATE IS IDENTICAL TO THE PARSED XML LINE BY LINE
@@ -213,4 +216,5 @@
  N I,LINE,FIRST,LAST,CUR,TMP,MDX,FOUND,CURVAL,DVDX,LCNT
  N C0CSTK ; LEAVE OUT FOR DEBUGGING
+ I '$D(REDUX) S REDUX=""
  I '$D(NOINX) S NOINX=0 ; IF NOT PASSED, GENERATE AN INDEX
  N ZXML
@@ -244,5 +248,5 @@
  . . . S CUR=CUR_$G(LKASD(CUR,I)) ; HANDLE MULTIPLES
  . . . D PUSH("C0CSTK",CUR) ; ADD TO THE STACK
- . . . D MKMDX("C0CSTK",.MDX) ; GENERATE THE M INDEX
+ . . . D MKMDX("C0CSTK",.MDX,REDUX) ; GENERATE THE M INDEX
  . . . ; W "MDX=",MDX,!
  . . . I $D(@ZXML@(MDX))  D  ; IN THE INDEX, IS A MULTIPLE
@@ -393,5 +397,5 @@
 QUEUE(BLST,ARRAY,FIRST,LAST)	   ; ADD AN ENTRY TO A BLIST
  ;
- I DEBUG W "QUEUEING ",BLST,!
+ I $G(DEBUG) W "QUEUEING ",BLST,!
  D PUSH(BLST,ARRAY_";"_FIRST_";"_LAST)
  Q
