Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: MXMLTEST

MXMLTEST.m

Go to the documentation of this file.
  1. MXMLTEST ;SAIC/DKM - Test XML SAX interface ;01/31/2002 17:11 [ 12/18/2003 4:53 PM ]
  1. ;;7.3;TOOLKIT;**58,1002**;Apr 25, 1995
  1. ;=================================================================
  1. ; This application acts as a client to the XML parser. It displays
  1. ; parsing events as they occur and generates a summary at the end.
  1. EN(DOC,OPTION) ;
  1. N CBK,CNT
  1. W !!!,"Invoking XML Parser...",!!!
  1. D SET(.CBK),EN^MXMLPRSE(DOC,.CBK,.OPTION)
  1. S CNT=""
  1. W !!!,"Parser Summary:",!!
  1. F S CNT=$O(CNT(CNT)) Q:CNT="" W CNT,":",?25,CNT(CNT),!
  1. Q
  1. ; Direct entry of XML text from keyboard
  1. ; Terminate text entry with a solitary '^'
  1. PASTE(OPTION) ;
  1. N X,Y,GBL
  1. S GBL=$NA(^TMP("MXMLTEST",$J))
  1. K @GBL
  1. F X=1:1 D Q:Y="^"
  1. .W X,"> "
  1. .R Y:$G(DTIME,600),!
  1. .E S Y="^"
  1. .S:Y'="^" @GBL@(X)=Y
  1. D EN(GBL,.OPTION)
  1. K @GBL
  1. Q
  1. ; Set the event interface entry points
  1. SET(CBK) N X,Y
  1. K CBK
  1. F X=0:1 S Y=$P($T(SETX+X),";;",2) Q:Y="" D
  1. .S CBK(Y)=$E(Y,1,8)_"^MXMLTEST"
  1. Q
  1. ; Convert special characters to \x format
  1. ESC(X) N C,Y,Z
  1. F Z=1:1 S C=$E(X,Z) Q:C="" D
  1. .S Y=$TR(C,$C(9,10,13,92),"tnc")
  1. .S:C'=Y $E(X,Z)=$S(Y="":"\\",1:"\"_Y),Z=Z+1
  1. Q X
  1. SETX ;;STARTDOCUMENT
  1. ;;ENDDOCUMENT
  1. ;;DOCTYPE
  1. ;;STARTELEMENT
  1. ;;ENDELEMENT
  1. ;;CHARACTERS
  1. ;;PI
  1. ;;ERROR
  1. ;;COMMENT
  1. ;;EXTERNAL
  1. ;;NOTATION
  1. ;;
  1. ; Event interface callbacks
  1. STARTDOC ;
  1. ENDDOCUM W EVT,"()",!
  1. Q
  1. DOCTYPE(P1,P2,P3) ;
  1. W EVT,"(""",P1,""",""",P2,""",""",P3,""")",!
  1. Q
  1. STARTELE(ELE,ATR) ;
  1. D ARGS(ELE,.ATR),COUNT("Elements")
  1. Q
  1. ARGS(ELE,ATR) ;
  1. N X,Y
  1. W EVT,"(""",ELE,""""
  1. S X="",Y=","""
  1. F S X=$O(ATR(X)) Q:X="" W Y,X,"=",$$ESC(ATR(X)) S Y=";"
  1. W $S($L(Y)=1:""")",1:")"),!
  1. Q
  1. ENDELEME(ELE) ;
  1. W EVT,"(""",ELE,""")",!
  1. Q
  1. CHARACTE(TXT) ;
  1. D COUNT("Non-markup Content",$L(TXT))
  1. W EVT,"(""",$$ESC(TXT),""")",!
  1. Q
  1. PI(TGT,TXT) ;
  1. D ARGS(TGT,.TXT)
  1. D COUNT("Processing Instructions")
  1. Q
  1. COMMENT(TXT) ;
  1. W EVT,"(""",TXT,""")",!
  1. D COUNT("Comments")
  1. Q
  1. EXTERNAL(SYS,PUB,GBL) ;
  1. W EVT,"(""",SYS,""",""",PUB,""")",!
  1. D COUNT("External Entities")
  1. Q
  1. NOTATION(NAME,SYS,PUB) ;
  1. W EVT,"(""",NAME,""",""",SYS,""",""",PUB,""")",!
  1. D COUNT("Notation Declarations")
  1. Q
  1. COUNT(TYPE,INC) ;
  1. S CNT(TYPE)=$G(CNT(TYPE))+$G(INC,1)
  1. Q
  1. ERROR(ERR) ;
  1. N X
  1. S X=$P("Warning^Validation Error^Conformance Error","^",ERR("SEV")+1)
  1. D COUNT(X_"s")
  1. W X,": ",ERR("MSG")
  1. W:$G(ERR("ARG"))'="" " (",ERR("ARG"),")"
  1. W ". ","Line ",ERR("LIN"),", Position ",ERR("POS"),!
  1. W $TR(ERR("XML"),$C(9,10,13)," "),!,$$REPEAT^XLFSTR("-",ERR("POS")-1),"^",!!
  1. Q