Changeset 728 for ccr/trunk/p/C0CXPATH.m
- Timestamp:
- Mar 27, 2010, 1:31:47 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ccr/trunk/p/C0CXPATH.m
r664 r728 340 340 N TMP,I,J,QXPATH 341 341 S FIRST=1 342 I '$D(@IARY@(0)) D ; LINE COUNT NOT IN ZERO NODE 343 . S @IARY@(0)=$O(@IARY@("//"),-1) ; THIS SHOULD USUALLY WORK 342 344 S LAST=@IARY@(0) ; FIRST AND LAST DEFAULT TO ROOT 343 345 I XPATH'="//" D ; NOT A ROOT QUERY … … 461 463 I $G(DEBUG) W "DOING INSERT ",INSXML,INSNEW,INSXPATH,! 462 464 I $G(DEBUG) F G1=1:1:@INSXML@(0) W @INSXML@(G1),! 463 I '$D(@INSXML@( 0)) D ; INSERT INTO AN EMPTY ARRAY465 I '$D(@INSXML@(1)) D ; INSERT INTO AN EMPTY ARRAY 464 466 . D CP^C0CXPATH(INSNEW,INSXML) ; JUST COPY INTO THE OUTPUT 465 I $D(@INSXML@(0)) D ; IF ORIGINAL ARRAY IS NOT EMPTY 467 I $D(@INSXML@(1)) D ; IF ORIGINAL ARRAY IS NOT EMPTY 468 . I '$D(@INSXML@(0)) S @INSXML@(0)=$O(@INSXML@(""),-1) ;SET LENGTH 466 469 . I $D(INSXPATH) D ; XPATH PROVIDED 467 470 . . D QOPEN("INSBLD",INSXML,INSXPATH) ; COPY THE BEFORE … … 469 472 . I '$D(INSXPATH) D ; NO XPATH PROVIDED, OPEN AT ROOT 470 473 . . D QOPEN("INSBLD",INSXML,"//") ; OPEN WITH ROOT XPATH 474 . I '$D(@INSNEW@(0)) S @INSNEW@(0)=$O(@INSNEW@(""),-1) ;SIZE OF XML 471 475 . D QUEUE("INSBLD",INSNEW,1,@INSNEW@(0)) ; COPY IN NEW XML 472 476 . I $D(INSXPATH) D ; XPATH PROVIDED … … 527 531 . D QUEUE("REBLD",REXML,XLAST+1,@REXML@(0)) ; THE REST 528 532 I $G(DEBUG) W "REPLACE PREBUILD",! 533 I $G(DEBUG) D PARY("REBLD") 534 D BUILD("REBLD","RTMP") 535 K @REXML ; KILL WHAT WAS THERE 536 D CP("RTMP",REXML) ; COPY IN THE RESULT 537 Q 538 ; 539 DELETE(REXML,REXPATH) ; DELETE THE XML AT THE XPATH POINT 540 ; REXML IS PASSED BY NAME XPATH IS A VALUE 541 N REBLD,XFIRST,XLAST,OLD,XNODE,RETMP 542 S OLD=$NA(^TMP($J,"REPLACE_OLD")) 543 D QUERY(REXML,REXPATH,OLD) ; CREATE INDEX, TEST XPATH, MAKE OLD 544 S XNODE=@REXML@(REXPATH) ; PULL OUT FIRST AND LAST LINE PTRS 545 S XFIRST=$P(XNODE,"^",1) 546 S XLAST=$P(XNODE,"^",2) 547 D QUEUE("REBLD",REXML,1,XFIRST-1) ; THE BEFORE 548 D QUEUE("REBLD",REXML,XLAST+1,@REXML@(0)) ; THE REST 529 549 I $G(DEBUG) D PARY("REBLD") 530 550 D BUILD("REBLD","RTMP")
Note:
See TracChangeset
for help on using the changeset viewer.