OPTION EXPLICIT CONST C1X7ELEMENT = &O1, C1X4TEXT = &O3 REM CAPTURE COMMAND LINE ARGUMENTS DIM G4ARGS, G6OUTPUT SET G6OUTPUT = WSCRIPT.STDOUT SET G4ARGS = WSCRIPT.ARGUMENTS IF G4ARGS.COUNT = &O1 THEN REM ?ARGCOUNT Y DIM A3DOC DIM A6MARKUP DIM A5SOURCE3LOC SET A3DOC = CREATEOBJECT("HTMLFILE") REM WSCRIPT.ECHO A3DOC.CREATEELEMENT("HTML").TAGNAME A5SOURCE3LOC = G4ARGS.ITEM(&O0) SET A6MARKUP = CREATEOBJECT("MSXML2.DOMDOCUMENT") A6MARKUP.ASYNC = FALSE IF A6MARKUP.LOAD(A5SOURCE3LOC) THEN REM ?LOADED Y G6OUTPUT.WRITELINE "" DIM A3DOC4TYPE A3DOC4TYPE = A6MARKUP.DOCTYPE.ATTRIBUTES.GETNAMEDITEM("SYSTEM").VALUE IF INSTR(A3DOC4TYPE, "strict") THEN REM ?STRICT Y G6OUTPUT.WRITELINE "" ELSE REM ?STRICT N G6OUTPUT.WRITELINE "" END IF REM ?STRICT DIM L5ATTRS, D4ATTR5COUNT, AN2IX DIM A4NODE, D7CURRENT, D6PARENT, D4NEXT SET A4NODE = A6MARKUP.DOCUMENTELEMENT SET D6PARENT = A3DOC DO REM @NODES SELECT CASE A4NODE.NODETYPE CASE C1X7ELEMENT REM =TYPE REM FIXME: HANDLE META CONTENT-TYPE SET D7CURRENT = A3DOC.CREATEELEMENT(A4NODE.BASENAME) D6PARENT.APPENDCHILD D7CURRENT SET L5ATTRS = A4NODE.ATTRIBUTES D4ATTR5COUNT = L5ATTRS.LENGTH FOR AN2IX = &O0 TO D4ATTR5COUNT - &O1 REM @ATTRIBUTES DIM AN4ATTR SET AN4ATTR = L5ATTRS.ITEM(AN2IX) IF AN4ATTR.NAME <> "xmlns" THEN D7CURRENT.SETATTRIBUTE AN4ATTR.NAME, AN4ATTR.VALUE, FALSE NEXT REM @ATTRIBUTES X CASE C1X4TEXT D6PARENT.APPENDCHILD A3DOC.CREATETEXTNODE(A4NODE.NODEVALUE) REM =TYPE END SELECT REM =TYPE SET D4NEXT = A4NODE.FIRSTCHILD IF D4NEXT IS NOTHING THEN REM ?CHILD N DO REM @GOUP SET A4NODE = A4NODE.PARENTNODE IF A4NODE IS NOTHING THEN EXIT DO SET D6PARENT = D6PARENT.PARENTNODE SET D4NEXT = A4NODE.NEXTSIBLING LOOP WHILE D4NEXT IS NOTHING REM @GOUP X SET A4NODE = D4NEXT IF A4NODE IS NOTHING THEN EXIT DO ELSE REM ?CHILD Y SET A4NODE = D4NEXT SET D6PARENT = D7CURRENT END IF REM ?CHILD LOOP REM @NODES X DIM A4TEXT A4TEXT = A3DOC.DOCUMENTELEMENT.OUTERHTML DIM A4CHAR, A4CODE FOR AN2IX = &01 TO LEN(A4TEXT) REM @TRANSLATE A4CHAR = MID(A4TEXT, AN2IX, &O1) A4CODE = ASCW(A4CHAR) IF A4CODE > &O176 THEN REM ?HICODE Y G6OUTPUT.WRITE "&#" & A4CODE & ";" ELSE REM ?HICODE N G6OUTPUT.WRITE A4CHAR END IF REM ?HICODE NEXT REM @TRANSLATE X ELSE REM ?LOADED N WSCRIPT.ECHO A6MARKUP.PARSEERROR.REASON END IF ELSE REM ?ARGCOUNT N WSCRIPT.ECHO "USAGE: X2HTML " END IF REM ?ARGCOUNT