Hi
Leider muss ich immer Elemente anhängen
und es ist immer der obere Node

hier mal die source
ev kannst du was auslesen

mfg
Thomas
000100000000 * ================================================== =============
000200050628 FXMLMAPINV IF E DISK
000300050629 ************************************************** ***************
000400050628 /COPY QXML4PR531
000500050628 /COPY XMLUNIDEFS
000600050629 /COPY VECTORH
000700000000 * General pointers *
000800050629 Delement S 255a
000900050629 DelementLen S 10I 0 INZ(0)
001000050629 DprovidedC S 10I 0 INZ(50)
001100050629 DavailableC S 10I 0 INZ(50)
001200050629 DXMLstrPtr§ S *
001300050629 DNodeptr§ S *
001400050629 DNodemapptr§ S *
001500050629 DNodLstPtr§ S *
001600050629 *****
001700050627 DDomExcDta§ S * INZ(%ADDR(Qxml_DOMEXCDATA))
001800000000 D* Pointer to DOMException return
001900000000 D* area. Monitor this area for
002000000000 D* return codes indicating
002100000000 D* incorrect/unsuccessful apis
002200050627 DDomDoc§ S *
002300050627 DDomNode§ S *
002400050627 DDomImpl§ S *
002500050627 DRootElem§ S *
002600050627 DProdElem§ S *
002700050629 DHelpElem§ S *
002800050628 DHelpElem1§ S *
002900050629 DLASTElem§ S *
003000050629 DLASTElem1§ S *
003100050627 DProdDataVal§ S *
003200050627 DCatElem§ S *
003300050627 DCatDataVal§ S *
003400050627 DdevByElem§ S *
003500050627 DdevByDataVal§ S *
003600050627 DDomDoct§ S *
003700050627 DDomNodeList§ S *
003800050627 DXMLString1§ S *
003900050627 DxmlDecl§ S *
004000050627 Dchild§ S *
004100000000 DXmlFile2 S 90A INZ('')
004200050627 DXmlFile2§ S *
004300000000 Dfd S *
004400000000 DErrNo S 10I 0 INZ(0)
004500050627 DErrNo§ S * INZ(%ADDR(ErrNo))
004600000000 DRTN S 10I 0 INZ(0)
004700000000 * *
004800050627 Dstrgbuf§ S *
004900000000 DOUTPUTSTR S 132A
005000050627 DOUTPUTSTR§ S * INZ(%ADDR(OUTPUTSTR))
005100050629 DInCodePage S 10I 0 INZ(237)
005200000000 DOutCodePage S 10I 0 INZ(819)
005300050627 DgEncodingStr§ S *
005400000000 Dencodingstr S 10A INZ('ISO-8859-1')
005500050627 Dencodingst§ S * INZ(%ADDR(ENCODINGSTR))
005600050627 DXMLNULL§ S *
005700050627 DOUTSTR§ S *
005800050627 DgFormatter§ S *
005900050627 DgTargetFile§ S *
006000050629 Dtrue S 5u 0 inz(1)
006100050629 Dfalse S 5u 0 inz(0)
006200050629 Dstop S 5u 0 inz(0)
006300000000 D* *
006400000000 DElemCount S 10I 0 INZ(0)
006500000000 DPRERROR PR
006600000000 DOUTPUTDOC PR
006700050627 D DOMNODE§ * VALUE
006800050628 ************************************************** *************************
006900050628 ****************** ANFANG *************************************************
007000050628 ************************************************** *************************
007100050627 C ALLOC 256 strgbuf§
007200050627 C ALLOC 256 outstr§
007300050627 C ALLOC 256 XmlFile2§
007400000000 C *ENTRY PLIST
007500000000 C PARM FILENAME 256
007600000000 * Make sure a parameter is passed providing IFS location for output
007700000000 šC IF %PARMS < 1 ‚<----------+
007800050627 C EVAL %str(OUTSTR§:256)='Please specify the ' ‚ |
007900000000 C + 'fully qualified IFS file name ' ‚ |
008000000000 C + 'where the created XML ' + x'25' ‚ |
008100000000 C + 'document will be streamed.' ‚ |
008200000000 C + x'25' + x'00' ‚ |
008300050627 C CALLP QxmlGenPrint(OUTSTR§:0) ‚ |
008400050628 C GOTO ENDE$ ‚ |
008500000000 šC ENDIF ‚<----------+
008600000000 šC IF %PARMS = 1 ‚<----------+
008700050627 C EVAL %str(XmlFile2§:256) = ‚ |
008800000000 C %subst(FILENAME:1:%SCAN(' ':FILENAME:1)-1) ‚ |
008900000000 C ELSE ‚ >---------+
009000050627 C EVAL %str(XmlFile2§:256) = %TRIMR(XmlFile2) ‚ |
009100000000 šC ENDIF ‚<----------+
009200050628 ************************************************** ************************
009300000000 * Initialize the XML environment, provide pointer to DOM exception
009400000000 * data area. A call to QxmlInit must occur before any other API
009500000000 * call.
009600050627 C CALLP QxmlInit(DomExcDta§)
009700050628 *********** ERSTELLEN XML **********************************************
009800000000 * Create a Document Implementation
009900050627 C EVAL DomImpl§ =
010000000000 C QxmlDOMImplementation_getImplementation()
010100050627 C EVAL DomDoct§ = QxmlDOMDocumentType_null
010200050628 *
010300050628 C Z-ADD 0 STUFE##
010400050628 *
010500050628 ******** ELEMENTE STUFE*******
010600050628 C NEUELEMENT TAG
010700050628 šC *IN52 DOWEQ *OFF ‚<----------+
010800050629 C READ MAPINV 52 ‚ |
010900050629 C ADD 1 LAUF## 13 0 ‚ |
011000050628 C MOVEL(P) XMLPATH ELEMENT## 60 ‚ |
011100050628 *FESTZLEGEN OB NOCH EINE STUFE ‚ |
011200050629 C READ MAPINV 52 ‚ |
011300050628 C Z-ADD VALUE VALUE1 9 0 ‚ |
011400050628 C*ZURÜCK NACH FESTSTELLUNG ‚ |
011500050628 C READP XMLMAPINV 52 ‚ |
011600050628 * ‚ |
011700050629 šC LAUF## IFEQ 20 ‚<---------+|
011800050629 C* GOTO WEITER ‚ ||
011900050629 šC ENDIF ‚<---------+|
012000050629 * ‚ |
012100050628 šC VALUE IFEQ 1 ‚<---------+|
012200050628 C EXSR ROOT$ ‚ ||
012300050628 C MOVE 'ROOT' ROOT 4 ‚ ||
012400050628 C GOTO NEXT# ‚ ||
012500050628 šC ENDIF ‚<---------+|
012600050628 * ‚ |
012700050628 C value ifeq 2 ‚<---------+|
012800050629 C EXSR NODE$ ‚ ||
012900050628 C MOVE *blank ROOT 4 ‚ ||
013000050628 C GOTO NEXT# ‚ ||
013100050628 šc endif ‚<---------+|
013200050628 * ‚ |
013300050628 C value ifLT STUFE## ‚<---------+|
013400050628 C EXSR NODE$ ‚ ||
013500050628 C GOTO NEXT# ‚ ||
013600050628 šc endif ‚<---------+|
013700050628 * ‚ |
013800050628 C value ifeq STUFE## ‚<---------+|
013900050628 C EXSR VALUE$ ‚ ||
014000050628 C GOTO NEXT# ‚ ||
014100050628 šc endif ‚<---------+|
014200050628 * ‚ |
014300050628 C value ifgt STUFE## ‚<---------+|
014400050628 C value1 ANDGT VALUE ‚ ||
014500050628 C EXSR NODE$ ‚ ||
014600050628 C GOTO NEXT# ‚ ||
014700050628 šc endif ‚<---------+|
014800050628 * ‚ |
014900050628 * ‚ |
015000050628 C value ifgt STUFE## ‚<---------+|
015100050628 C EXSR VALUE$ ‚ ||
015200050628 C GOTO NEXT# ‚ ||
015300050628 šc endif ‚<---------+|
015400050628 * ‚ |
015500050628 C NEXT# TAG ‚ |
015600050628 C Z-ADD VALUE STUFE## 9 0 ‚ |
015700050628 * ‚ |
015800050628 šC ENDDO ‚<----------+
015900050629 C WEITER TAG
016000050628 *
016100050628 C CALLP QxmlDOMElement_delete(RootElem§)
016200050628 *
016300000000 * verify document by getting all elements by tag name '*'
016400050627 C EVAL %str(strgbuf§:256)='*'
016500050627 C EVAL DomNodeList§ =
016600000000 C QxmlDOMDocument_getElementsByTagName
016700050627 C (DomDoc§:
016800050627 C strgbuf§:
016900000000 C Qxml_CHARSTR:
017000000000 C 0)
017100050628 * Verify the resulting node list count (element count should be > 59)
017200000000 C EVAL ElemCount=QxmlDOMNodeList_getLength
017300050627 C (DomNodeList§)
017400050628 šC IF ElemCount < 2 ‚<----------+
017500000000 C CALLP PRERROR ‚ |
017600000000 šC ENDIF ‚<----------+
017700050627 C CALLP QxmlDOMNodeList_delete(DomNodeList§)
017800000000 * Output the XML document to a stream file
017900000000 C EVAL fd=QxmlOpenNewOutputStream
018000050627 C (xmlFile2§:
018100050627 C 0: ErrNo§: OutCodePage)
018200000000 * Note that outputstream open will fail if already exists
018300000000 šC IF fd = *NULL ‚<----------+
018400050627 C EVAL %str(OUTSTR§:256) = 'Error: output stream ' ‚ |
018500000000 C + 'failed. Errno is' ‚ |
018600000000 C +%editc(ErrNo:'Z') ‚ |
018700000000 C +x'2500' ‚ |
018800050627 C CALLP QxmlGenPrint(OUTSTR§:0) ‚ |
018900000000 C ELSE ‚ >---------+
019000000000 * create an XMLFormatTarget to Output XML ‚ |
019100050627 C EVAL gTargetFile§=QxmlFileFormatTarget_new( ‚ |
019200000000 C fd) ‚ |
019300000000 * create XMLFormatter providing XMLFormatTarget output ‚ |
019400050627 C EVAL gFormatter§=QxmlXMLFormatter_new( ‚ |
019500050629 C encodingst§: Qxml_JOBCCSID:10:
019600050627 C gTargetFile§: ‚ |
019700000000 C Qxml_noEscapes:Qxml_UnRep_CharRef) ‚ |
019800000000 * Output DOM tree to target IFS stream file ‚ |
019900050627 C CALLP OUTPUTDOC(DomDoc§) ‚ |
020000000000 C CALLP QxmlCloseOutputStream(fd) ‚ |
020100000000 C CALLP QxmlFileFormatTarget_delete( ‚ |
020200050627 C gTargetFile§) ‚ |
020300000000 C CALLP QxmlXMLFormatter_delete( ‚ |
020400050627 C gFormatter§) ‚ |
020500000000 šC ENDIF ‚<----------+
020600050627 C CALLP QxmlDOMDocument_delete(DomDoc§)
020700000000 C CALLP QxmlTerm
020800050628 C ENDE$ TAG
020900050628 C SETON LR
021000050628 C************************************************* *************************
021100050628 C ROOT$ BEGSR
021200050628 * Create a null terminated string for root company
021300050628 C EVAL %str(strgbuf§:256) = %TRIMR(ELEMENT##)
021400050628 C EVAL DomDoc§ =
021500050628 C QxmlDOMImplementation_createDocument
021600050628 C (DomImpl§:
021700050628 C XMLString1§:
021800050628 C Qxml_UNICODE:
021900050628 C 0:
022000050628 C strgbuf§ :
022100050628 C Qxml_CHARSTR:
022200050628 C 0:
022300050628 C DomDoct§)
022400050628 * Delete the objects created above that are not needed anymore
022500050628 C CALLP QxmlDOMImplementation_delete
022600050628 C (DomImpl§)
022700050628 C CALLP QxmlDOMDOCUMENTTYPE_delete(
022800050628 C DomDoct§)
022900050628 * Get the root element and keep to append additional elements
023000050628 C EVAL RootElem§ =
023100050628 C QxmlDOMDocument_getDocumentElement
023200050628 C (DomDoc§)
023300050629 *
023400050629 C EVAL LASTElem§ =
023500050629 C QxmlDOMDocument_getDocumentElement
023600050629 C (DomDoc§)
023700050629 C EXSR ADD$
023800050629 *
023900050628 C ENDSR
024000050629 C************************************************* *************************
024100050628 C NODE$ BEGSR
024200050629 C MOVE ' ' CLOSE## 1
024300050629 šC CLOSE## IFNE *BLANK ‚<----------+
024400050629 c EVAL LASTELEM = GetLstElem ‚ |
024500050629 c CALLP RemLstElem ‚ |
024600050629 C CALLP QxmlDOMElement_delete(LASTELEM1§)
024700050629 šC ENDIF ‚<----------+
024800050629 *
024900050629 C EVAL %str(strgbuf§:256) = %TRIMR(ELEMENT##)
025000050629 C EVAL XMLString1§=
025100050629 C QxmlTranscodeToUNICODE(strgbuf§:
025200050629 C Qxml_CHARSTR:
025300050629 C 0)
025400050629 * Create a document element and append to root
025500050629 C EVAL PRODELEM§=
025600050629 C QxmlDOMDocument_createElement(
025700050629 C DomDoc§:
025800050629 C strgbuf§:
025900050629 C qxml_JOBCCSID:
026000050629 C 0)
026100050629 C EVAL LASTELEM1§ = QxmlDOMNode_appendChild(
026200050629 C LASTElem§:
026300050629 C PRODELEM§)
026400050629 *
026500050629 C EVAL LASTELEM§=PRODELEM§
026600050629 C EXSR ADD$
026700050628 C ENDSR
026800050628 C************************************************* *************************
026900050628 C VALUE$ BEGSR
027000050629 * Create a document element of name 'product' and append to the root
027100050629 * Note that for string elements you can either specify the length or
027200050629 * provide it as a null terminated string (length is 0)
027300050628 C EVAL %str(strgbuf§:256) = %TRIMR(ELEMENT##)
027400050628 C EVAL XMLString1§=
027500050628 C QxmlTranscodeToUNICODE(strgbuf§:
027600050628 C Qxml_CHARSTR:
027700050628 C 0)
027800050629 * Create a document element and append to root
027900050629 C EVAL PRODELEM§=
028000050629 C QxmlDOMDocument_createElement(
028100050629 C DomDoc§:
028200050629 C strgbuf§:
028300050629 C qxml_JOBCCSID:
028400050629 C 0)
028500050629 C EVAL CHILD§ = QxmlDOMNode_appendChild(
028600050629 C LASTElem§:
028700050629 C PRODELEM§)
028800050629 C* CALLP QxmlDOMNode_delete(child§)
028900050629 * Create a text node and add element
029000050628 C MOVEL(P) 'BÜRKLIN-DATA'INHALT## 60
029100050628 C EVAL %str(strgbuf§:256)= %TRIMR(INHALT##)
029200050628 C EVAL ProdDataVal§ =
029300050628 C QxmlDOMDocument_createTextNode
029400050628 C (DomDoc§:
029500050628 C strgbuf§:
029600050628 C qxml_CHARSTR:
029700050628 C 18)
029800050629 C EVAL child§ = QxmlDOMNode_appendChild
029900050629 C (ProdElem§:PRODDATAVAL§)
030000050629 *
030100050629 C* CALLP QxmlDOMText_delete(ProdDataVal§)
030200050629 C* CALLP QxmlDOMElement_delete(ProdElem§)
030300050629 C* CALLP QxmlDOMNode_delete(child§)
030400050628 C ENDSR
030500050628 ************************************************** ************************
030600050629 C ADD$ BEGSR
030700050629 * Holen Node Name
030800050629 C EVAL XMLstrPtr§ = QxmlDOMNode_getNodeName
030900050629 C (LASTElem§)
031000050629 C EVAL providedC = 50
031100050629 C EVAL availableC = 50
031200050629 C CALLP QxmlTranscode(XMLstrPtr§: Qxml_UNICODE:
031300050629 C %ADDR(element): %ADDR(providedC):
031400050629 C %ADDR(availableC): Qxml_CHARSTR)
031500050629 C EVAL elementLen = QxmlXMLString_stringLen(
031600050629 C XMLstrPtr§:Qxml_UNICODE)
031700050629 C eval element = %subst(element:1:elementLen)
031800050629 *
031900050629 c CALLP AddElem(element)
032000050629 C EXSR LASTELEMENT$
032100050629 C ENDSR
032200050629 ************************************************** ************************
032300050629 C remove$ BEGSR
032400050629 C*REMOVE LAST ELEMENT
032500050629 C MOVE *BLANK LASTELEM 50
032600050629 c EVAL LASTELEM = GetLstElem
032700050629 c CALLP RemLstElem
032800050629 C ENDSR
032900050629 ************************************************** ************************
033000050629 C LASTELEMENT$ BEGSR
033100050629 C MOVE *BLANK LASTELEM 50
033200050629 c EVAL LASTELEM = GetLstElem
033300050629 C ENDSR
033400050629 ************************************************** ************************
033500000000 PPRERROR B
033600000000 DPRERROR PI
033700050627 C EVAL %str(OUTSTR§:256) = 'Error: Element count '
033800000000 C + 'is not equal to 4' + x'25' + x'00'
033900050627 C CALLP QxmlGenPrint(OUTSTR§:0)
034000050628 C RETURN
034100050628 ************************************************** ************************
034200000000 PPRERROR E
034300000000 POUTPUTDOC B
034400000000 DOUTPUTDOC PI
034500050627 D DOMNODE§ * VALUE
034600000000 *
034700050627 DDOMAttr§ S *
034800050627 DDOMChild§ S *
034900050627 DSaveChild§ S *
035000050627 DNodeName§ S *
035100050627 DNodeVal§ S *
035200050627 DAttrName2§ S *
035300050627 DAttrVal2§ S *
035400050627 DNodeMap§ S *
035500000000 DNodeType S 5I 0
035600000000 Dattrlen S 10I 0
035700000000 Distrue S 10I 0
035800000000 Dsaveattrl S 10I 0
035900000000 DIndex S 10I 0 INZ(0)
036000000000 DLENT S 10I 0 INZ(0)
036100050627 DDOCTPID§ S *
036200050627 DSTR§ S *
036300000000 * get node name, value and type
036400050627 C EVAL NodeName§ = QxmlDOMNODE_GETNODENAME(
036500050627 C DOMNODE§)
036600050627 C EVAL NodeVal§ =QxmlDOMNODE_GETNODEVALUE(
036700050627 C DOMNODE§ )
036800000000 C EVAL NodeType =QxmlDOMNODE_GETNODETYPE(
036900050627 C DOMNODE§ )
037000050627 C EVAL LENT=QxmlXMLString_stringLen(NodeVal§
037100000000 C :Qxml_UNICODE)
037200000000 * Based on NODE TYPE, determine the output
037300000000 * If Node TYPE is TEXT_NODE
037400000000 šC IF NodeType =Qxml_TEXT_NOD ‚<----------+
037500000000 C CALLP QxmlXMLFormatter_formatBuf( ‚ |
037600050627 C gFormatter§: ‚ |
037700050627 C NodeVal§: ‚ |
037800000000 C Qxml_UNICODE: ‚ |
037900000000 C 0: ‚ |
038000000000 C Qxml_CharEscapes: ‚ |
038100000000 C Qxml_DefaultEscape) ‚ |
038200000000 C ELSE ‚ >---------+
038300000000 * Node TYPE is Element - print child nodes ‚ |
038400000000 šC IF NodeType = Qxml_ELMNT_NOD ‚<---------+|
038500000000 * Determine if element node has any 'attributes' ‚ ||
038600000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||
038700050627 C gFormatter§: ‚ ||
038800000000 C Qxml_NoEscapes) ‚ ||
038900000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||
039000050627 C gFormatter§: ‚ ||
039100000000 C %ADDR(chOpenAngle)) ‚ ||
039200000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||
039300050627 C gFormatter§: ‚ ||
039400050627 C nodeName§) ‚ ||
039500050627 C EVAL NodeMap§=QxmlDOMNODE_GETATTRIBUTES( ‚ ||
039600050627 C DOMNODE§) ‚ ||
039700000000 C EVAL attrlen=QxmlDOMNAMEDNODEMAP_GETLENGTH( ‚ ||
039800050627 C NodeMap§) ‚ ||
039900000000 šC DOW (index<attrlen) ‚<--------+||
040000050627 C EVAL DOMAttr§ = ‚ |||
040100050627 C QxmlDOMNamedNodeMap_ITEM(NodeMap§:Index) ‚ |||
040200050627 C EVAL AttrName2§ = ‚ |||
040300050627 C QxmlDOMNODE_getNodeName(DOMAttr§) ‚ |||
040400050627 C EVAL AttrVal2§ =QxmlDOMNODE_getNodeValue( ‚ |||
040500050627 C DOMAttr§) ‚ |||
040600050627 C CALLP QxmlDOMNode_delete(DOMAttr§) ‚ |||
040700000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||
040800050627 C gFormatter§: ‚ |||
040900000000 C Qxml_NoEscapes) ‚ |||
041000000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||
041100050627 C gFormatter§: ‚ |||
041200000000 C %ADDR(chSpace)) ‚ |||
041300000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||
041400050627 C gFormatter§: ‚ |||
041500050627 C AttrName2§) ‚ |||
041600000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||
041700050627 C gFormatter§: ‚ |||
041800000000 C %ADDR(chEqual)) ‚ |||
041900000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||
042000050627 C gFormatter§: ‚ |||
042100000000 C %ADDR(chDoubleQuote)) ‚ |||
042200000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||
042300050627 C gFormatter§: ‚ |||
042400000000 C Qxml_AttrEscapes) ‚ |||
042500000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||
042600050627 C gFormatter§: ‚ |||
042700050627 C AttrVal2§) ‚ |||
042800000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||
042900050627 C gFormatter§: ‚ |||
043000000000 C Qxml_NoEscapes) ‚ |||
043100000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||
043200050627 C gFormatter§: ‚ |||
043300000000 C %ADDR(chDoubleQuote)) ‚ |||
043400000000 C EVAL Index = Index +1 ‚ |||
043500000000 šC ENDDO ‚<--------+||
043600050627 C CALLP QxmlDOMNamedNodeMap_delete(NodeMap§) ‚ ||
043700000000 * Process children of node ‚ ||
043800050627 C EVAL DOMChild§=QxmlDOMNODE_GETFIRSTCHILD( ‚ ||
043900050627 C DOMNODE§) ‚ ||
044000050627 šC IF (QxmlDOMNODE_ISNULL(DomChild§) = ‚<--------+||
044100000000 C Qxml_NODNOTNUL) ‚ |||
044200000000 * Do while there are child nodes ‚ |||
044300000000 C ‚ |||
044400000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||
044500050627 C gFormatter§: ‚ |||
044600000000 C Qxml_NoEscapes) ‚ |||
044700000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||
044800050627 C gFormatter§: ‚ |||
044900000000 C %ADDR(chCloseAngle)) ‚ |||
045000050627 šC DOW (QxmlDOMNODE_ISNULL(DomChild§) = ‚<-------+|||
045100000000 C Qxml_NODNOTNUL) ‚ ||||
045200050627 C CALLP OUTPUTDOC(DOMChild§) ‚ ||||
045300050627 C EVAL SaveChild§=DOMChild§ ‚ ||||
045400050627 C EVAL DOMChild§=QxmlDOMNode_getNextSibling( ‚ ||||
045500050627 C DOMChild§) ‚ ||||
045600050627 C CALLP QxmlDOMNODE_delete(SaveChild§) ‚ ||||
045700000000 šC ENDDO ‚<-------+|||
045800050627 C CALLP QxmlDOMNODE_delete(DOMChild§) ‚ |||
045900000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||
046000050627 C gFormatter§: ‚ |||
046100000000 C Qxml_NoEscapes) ‚ |||
046200000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||
046300050627 C gFormatter§: ‚ |||
046400050627 C gEndElement§) ‚ |||
046500000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||
046600050627 C gFormatter§: ‚ |||
046700050627 C nodeName§) ‚ |||
046800000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||
046900050627 C gFormatter§: ‚ |||
047000000000 C %ADDR(chCloseAngle)) ‚ |||
047100000000 C ELSE ‚ >-------+||
047200050627 C CALLP QxmlDOMNODE_delete(DOMChild§) ‚ |||
047300000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||
047400050627 C gFormatter§: ‚ |||
047500000000 C Qxml_NoEscapes) ‚ |||
047600000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||
047700050627 C gFormatter§: ‚ |||
047800000000 C %ADDR(chForwardSlash)) ‚ |||
047900000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||
048000050627 C gFormatter§: ‚ |||
048100000000 C %ADDR(chCloseAngle)) ‚ |||
048200000000 * Close the element children IF ‚ |||
048300000000 šC ENDIF ‚<--------+||
048400000000 C ELSE ‚ >--------+|
048500000000 * Node TYPE is Document - print child nodes ‚ ||
048600000000 šC IF NodeType =Qxml_DOC_NOD ‚<--------+||
048700050627 C EVAL DOMChild§=QxmlDOMNODE_GETFIRSTCHILD( ‚ |||
048800050627 C DOMNODE§) ‚ |||
048900050627 šC DOW (QxmlDOMNODE_ISNULL(DomChild§) = ‚<-------+|||
049000000000 C Qxml_NODNOTNUL) ‚ ||||
049100050627 C CALLP OUTPUTDOC(DOMChild§) ‚ ||||
049200050627 C EVAL SaveChild§=DOMChild§ ‚ ||||
049300050627 C EVAL DOMChild§=QxmlDOMNODE_GETNEXTSIBLING( ‚ ||||
049400050627 C DOMChild§) ‚ ||||
049500050627 C CALLP QxmlDOMNODE_delete(SaveChild§) ‚ ||||
049600000000 šC ENDDO ‚<-------+|||
049700050627 C CALLP QxmlDOMNODE_delete(DOMChild§) ‚ |||
049800000000 C ELSE ‚ >-------+||
049900000000 * If Node TYPE is COMMENT_NODE ‚ |||
050000000000 šC IF NodeType = Qxml_CMNT_NOD ‚<-------+|||
050100000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||
050200050627 C gFormatter§:Qxml_NoEscapes) ‚ ||||
050300000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||
050400050627 C gFormatter§:gStartComment§) ‚ ||||
050500000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||
050600050627 C gFormatter§:nodeVal§) ‚ ||||
050700000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||
050800050627 C gFormatter§:gEndComment§) ‚ ||||
050900000000 C ELSE ‚ >------+|||
051000000000 * Node TYPE is Processing Instruction ‚ ||||
051100000000 šC IF NodeType =Qxml_PI_NOD ‚<------+||||
051200000000 C* Output the markup for Processing instruction ‚ |||||
051300000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||||
051400050627 C gFormatter§: ‚ |||||
051500000000 C Qxml_NoEscapes) ‚ |||||
051600000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||
051700050627 C gFormatter§: ‚ |||||
051800050627 C gStartPI§) ‚ |||||
051900000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||
052000050627 C gFormatter§: ‚ |||||
052100050627 C nodeName§) ‚ |||||
052200000000 šC IF (LENT>0) ‚<-----+|||||
052300000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||
052400050627 C gFormatter§: ‚ ||||||
052500000000 C %ADDR(chSpace)) ‚ ||||||
052600000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||
052700050627 C gFormatter§: ‚ ||||||
052800050627 C nodeVal§) ‚ ||||||
052900000000 šC ENDIF ‚<-----+|||||
053000000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||
053100050627 C gFormatter§: ‚ |||||
053200050627 C gEndPI§) ‚ |||||
053300000000 C ELSE ‚ >-----+||||
053400000000 * Node TYPE is Start Entity Reference Node ‚ |||||
053500000000 šC IF NodeType = Qxml_ENTRF_NOD ‚<-----+|||||
053600000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||||
053700050627 C gFormatter§: ‚ ||||||
053800000000 C Qxml_NoEscapes) ‚ ||||||
053900000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||
054000050627 C gFormatter§:%ADDR(chAmpersand)) ‚ ||||||
054100000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||
054200050627 C gFormatter§:nodeName§) ‚ ||||||
054300000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||
054400050627 C gFormatter§:%ADDR(chSemiColon)) ‚ ||||||
054500000000 C ELSE ‚ >----+|||||
054600000000 * Node Type is CDATA node ‚ ||||||
054700000000 šC IF NodeType = Qxml_CDATA_NOD ‚<----+||||||
054800000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||||||
054900050627 C gFormatter§: ‚ |||||||
055000000000 C Qxml_NoEscapes) ‚ |||||||
055100000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||||
055200050627 C gFormatter§: ‚ |||||||
055300050627 C gStartCDATA§) ‚ |||||||
055400000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||||
055500050627 C gFormatter§:nodeVal§) ‚ |||||||
055600000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||||
055700050627 C gFormatter§:gEndCDATA§) ‚ |||||||
055800000000 C ELSE ‚ >---+||||||
055900000000 * Node TYPE is Start Document Type node ‚ |||||||
056000000000 šC IF nodeType = Qxml_DOCTP_NOD ‚<---+|||||||
056100000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||||||
056200050627 C gFormatter§:Qxml_NoEscapes) ‚ ||||||||
056300000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||
056400050627 C gFormatter§:gStartDocType§) ‚ ||||||||
056500000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||
056600050627 C gFormatter§:nodeName§) ‚ ||||||||
056700050627 C EVAL DOCTPID§ = QxmlDOMDocumentType_getPublicId ‚ ||||||||
056800050627 C (DOMNODE§) ‚ ||||||||
056900050627 šC IF DOCTPID§ <> *NULL ‚<--+||||||||
057000000000 * Output Public ID ‚ |||||||||
057100000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||||||||
057200050627 C gFormatter§:Qxml_NoEscapes) ‚ |||||||||
057300000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||||||||
057400050627 C gFormatter§:%ADDR(chSpace)) ‚ |||||||||
057500000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||||||
057600050627 C gFormatter§:gPublic§) ‚ |||||||||
057700000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||||||
057800050627 C gFormatter§OCTPID§) ‚ |||||||||
057900000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||||||||
058000050627 C gFormatter§:%ADDR(chDoubleQuote)) ‚ |||||||||
058100050627 C EVAL DOCTPID§ = QxmlDOMDocumentType_getSystemID ‚ |||||||||
058200050627 C (DOMNODE§) ‚ |||||||||
058300050627 šC IF DOCTPID§ <> *NULL ‚<-+|||||||||
058400000000 * Output system id ‚ ||||||||||
058500000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||||||||
058600050627 C gFormatter§:Qxml_NoEscapes) ‚ ||||||||||
058700000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||||
058800050627 C gFormatter§:%ADDR(chSpace)) ‚ ||||||||||
058900000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||||
059000050627 C gFormatter§:%ADDR(chDoubleQuote)) ‚ ||||||||||
059100000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
059200050627 C gFormatter§OCTPID§) ‚ ||||||||||
059300000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||||
059400050627 C gFormatter§:%ADDR(chDoubleQuote)) ‚ ||||||||||
059500050627 š * end DOCTPID§ SystemID ‚ ||||||||||
059600000000 šC ENDIF ‚<-+|||||||||
059700000000 * check for System ID to output ‚ |||||||||
059800000000 C ELSE ‚ >-+||||||||
059900050627 C EVAL DOCTPID§=QxmlDOMDocumentType_getSystemId ‚ |||||||||
060000050627 C (DOMNODE§) ‚ |||||||||
060100050627 šC IF DOCTPID§ <> *NULL ‚<-+|||||||||
060200000000 * Output SYSTEM ID ‚ ||||||||||
060300000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||||||||
060400050627 C gFormatter§:Qxml_NoEscapes) ‚ ||||||||||
060500000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||||
060600050627 C gFormatter§:%ADDR(chSpace)) ‚ ||||||||||
060700000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
060800050627 C gFormatter§:gSystem§) ‚ ||||||||||
060900000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
061000050627 C gFormatter§OCTPID§) ‚ ||||||||||
061100000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||||
061200050627 C gFormatter§:%ADDR(chDoubleQuote)) ‚ ||||||||||
061300000000 šC ENDIF ‚<-+|||||||||
061400050627 š * end DOCTPID§ PublicID ‚ |||||||||
061500000000 šC ENDIF ‚<--+||||||||
061600050627 C EVAL DOCTPID§ = ‚ ||||||||
061700000000 C QxmlDOMDocumentType_getInternalSubset ‚ ||||||||
061800050627 C (DOMNODE§) ‚ ||||||||
061900050627 šC IF DOCTPID§ <> *NULL ‚<--+||||||||
062000000000 * Output internal subset ‚ |||||||||
062100000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||||||||
062200050627 C gFormatter§:Qxml_NoEscapes) ‚ |||||||||
062300000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||||||||
062400050627 C gFormatter§:%ADDR(chOpenSquare)) ‚ |||||||||
062500000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||||||
062600050627 C gFormatter§OCTPID§) ‚ |||||||||
062700000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||||||||
062800050627 C gFormatter§:%ADDR(chCloseSquare)) ‚ |||||||||
062900000000 * End output internal subset ‚ |||||||||
063000000000 šC ENDIF ‚<--+||||||||
063100000000 * Output the end of the DOCTYPE ‚ ||||||||
063200000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||||||
063300050627 C gFormatter§:Qxml_NoEscapes) ‚ ||||||||
063400000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||
063500050627 C gFormatter§:%ADDR(chCloseAngle)) ‚ ||||||||
063600000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||
063700050627 C gFormatter§:%ADDR(chLF)) ‚ ||||||||
063800000000 C ELSE ‚ >--+|||||||
063900000000 * If note type Start Entity Node ‚ ||||||||
064000000000 šC IF nodeType = Qxml_ENTTY_NOD ‚<--+||||||||
064100000000 * Output start of entity ‚ |||||||||
064200000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||||||||
064300050627 C gFormatter§:Qxml_NoEscapes) ‚ |||||||||
064400000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||||||
064500050627 C gFormatter§:gStartEntity§) ‚ |||||||||
064600000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ |||||||||
064700050627 C gFormatter§:nodeName§) ‚ |||||||||
064800000000 * Output Entity Public ID ‚ |||||||||
064900050627 C EVAL DOCTPID§ = QxmlDOMEntity_getPublicId ‚ |||||||||
065000050627 C (DOMNODE§) ‚ |||||||||
065100050627 šC IF DOCTPID§ <> *NULL ‚<-+|||||||||
065200000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||||||||
065300050627 C gFormatter§:Qxml_NoEscapes) ‚ ||||||||||
065400000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
065500050627 C gFormatter§:gPublic§) ‚ ||||||||||
065600000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
065700050627 C gFormatter§OCTPID§) ‚ ||||||||||
065800000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||||
065900050627 C gFormatter§:%ADDR(chDoubleQuote)) ‚ ||||||||||
066000000000 šC ENDIF ‚<-+|||||||||
066100000000 * Output Entity System ID ‚ |||||||||
066200050627 C EVAL DOCTPID§ = QxmlDOMEntity_getSystemId ‚ |||||||||
066300050627 C (DOMNODE§) ‚ |||||||||
066400050627 šC IF DOCTPID§ <> *NULL ‚<-+|||||||||
066500000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||||||||
066600050627 C gFormatter§:Qxml_NoEscapes) ‚ ||||||||||
066700000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
066800050627 C gFormatter§:gSystem§) ‚ ||||||||||
066900000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
067000050627 C gFormatter§OCTPID§) ‚ ||||||||||
067100000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||||
067200050627 C gFormatter§:%ADDR(chDoubleQuote)) ‚ ||||||||||
067300000000 šC ENDIF ‚<-+|||||||||
067400000000 * Output Entity Notation ‚ |||||||||
067500050627 C EVAL DOCTPID§ = QxmlDOMEntity_getNotationName ‚ |||||||||
067600050627 C (DOMNODE§) ‚ |||||||||
067700050627 šC IF DOCTPID§ <> *NULL ‚<-+|||||||||
067800000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ ||||||||||
067900050627 C gFormatter§:Qxml_NoEscapes) ‚ ||||||||||
068000000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
068100050627 C gFormatter§:gNotation§) ‚ ||||||||||
068200000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
068300050627 C gFormatter§OCTPID§) ‚ ||||||||||
068400000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ ||||||||||
068500050627 C gFormatter§:%ADDR(chDoubleQuote)) ‚ ||||||||||
068600000000 šC ENDIF ‚<-+|||||||||
068700000000 * Output end of Entity ‚ |||||||||
068800000000 C CALLP QxmlXMLFormatter_setEscapeFlags( ‚ |||||||||
068900050627 C gFormatter§:Qxml_NoEscapes) ‚ |||||||||
069000000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||||||||
069100050627 C gFormatter§:%ADDR(chCloseAngle)) ‚ |||||||||
069200000000 C CALLP QxmlXMLFormatter_streamoutXMLCh( ‚ |||||||||
069300050627 C gFormatter§:%ADDR(chLF)) ‚ |||||||||
069400000000 C ELSE ‚ >-+||||||||
069500000000 * If Node TYPE is Start DecL Node ‚ |||||||||
069600000000 šC IF nodeType = -1 ‚<-+|||||||||
069700000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
069800050627 C gFormatter§:gXMLDOMDecl1§) ‚ ||||||||||
069900050627 C* EVAL STR§ = QxmlDOMXMLDecl_getVersion( ‚ ||||||||||
070000050627 C* DOMNODE§) ‚ ||||||||||
070100000000 * Output version ‚ ||||||||||
070200000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
070300050627 C gFormatter§:STR§) ‚ ||||||||||
070400000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
070500050627 C gFormatter§:gXMLDOMDecl2§) ‚ ||||||||||
070600050627 C* EVAL STR§ = QxmlDOMXMLDecl_getEncoding( ‚ ||||||||||
070700050627 C* DOMNODE§) ‚ ||||||||||
070800000000 * Output encoding ‚ ||||||||||
070900000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
071000050627 C gFormatter§:STR§) ‚ ||||||||||
071100050627 C* EVAL STR§ = QxmlDOMXMLDecl_getStandalone( ‚ ||||||||||
071200050627 C* DOMNODE§) ‚ ||||||||||
071300050627 šC IF STR§ <> *NULL ‚++||||||||||
071400000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ +||||||||||
071500050627 C gFormatter§:gXMLDecl3§) ‚ +||||||||||
071600000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ +||||||||||
071700050627 C gFormatter§:STR§) ‚ +||||||||||
071800000000 šC ENDIF ‚++||||||||||
071900000000 C CALLP QxmlXMLFormatter_streamoutXMLString( ‚ ||||||||||
072000050627 C gFormatter§:gXMLDecl4§) ‚ ||||||||||
072100000000 * Close Declaration Node IF ‚ ||||||||||
072200000000 šC ENDIF ‚<-+|||||||||
072300000000 * Close Entity Node IF ‚ |||||||||
072400000000 šC ENDIF ‚<--+||||||||
072500000000 * Close Document Type Node IF ‚ ||||||||
072600000000 šC ENDIF ‚<---+|||||||
072700000000 * Close CDATA node IF ‚ |||||||
072800000000 šC ENDIF ‚<----+||||||
072900000000 * Close Entity Reference Node IF ‚ ||||||
073000000000 šC ENDIF ‚<-----+|||||
073100000000 * Close the PI node IF ‚ |||||
073200000000 šC ENDIF ‚<------+||||
073300000000 * Close the Comment Node IF ‚ ||||
073400000000 šC ENDIF ‚<-------+|||
073500000000 * Close the Document Node IF ‚ |||
073600000000 šC ENDIF ‚<--------+||
073700000000 * Close the Element node IF ‚ ||
073800000000 šC ENDIF ‚<---------+|
073900000000 * Close the Text Node IF ‚ |
074000000000 šC ENDIF ‚<----------+
074100000000 POUTPUTDOC E