Research Article
Pipelined XPath Query Based on Cost Optimization
| Input: XML document , XPath query . | | Output: XML node region coding , relation index , XML statistics . | (1) | ← Analyze(); | (2) | id ← 0, level ← 0;//record the node ID and the level value of the current node | (3) | , ,;//initializing statistical variables | (4) | while(!EOF()) | (5) | p ← Parsing(); | (6) | if(p is StartElement)//when a header tag is encountered | (7) | u ← id, ← CreateNewNode(p), , id ← id + 1, level ← level+1; | (8) | if( is EndElement)//when the tail tag is encountered | (9) | UpdateNode(.end); | (10) | if; | (11) | foreach node id | (12) | if; | (13) | if((.nodeType = ELEMENT)∧()∧(.level-1 = level)) = “/”; | (14) | else if((.nodeType = ELEMENT)∧()) = “//”; | (15) | else if((.nodeType = ATTRIBUTE)∧()∧(.level-1 = level)) = “@”; | (16) | if() ; | (17) | if((.level = .level-1)∧(.nodeType = ELEMENT)) ; | (18) | else if((.level ≠ .level-1)∧(.nodeType = ELEMENT)) ; | (19) | else if((.level = .level-1)∧(.nodeType = ATTRIBUTE)) ; , | (20) | ; | (21) | level ← level-1; | (22) | ;//end while | (23) | , , ; | (24) | ; | (25) | return {, , }; |
|