| 95 | | if (type) { |
| 96 | | switch (type) { |
| 97 | | case String: |
| 98 | | return exp.evaluate( |
| 99 | | context, |
| 100 | | XPathResult.STRING_TYPE, |
| 101 | | null |
| 102 | | ).stringValue; |
| 103 | | case Number: |
| 104 | | return exp.evaluate( |
| 105 | | context, |
| 106 | | XPathResult.NUMBER_TYPE, |
| 107 | | null |
| 108 | | ).numberValue; |
| 109 | | case Boolean: |
| 110 | | return exp.evaluate( |
| 111 | | context, |
| 112 | | XPathResult.BOOLEAN_TYPE, |
| 113 | | null |
| 114 | | ).booleanValue; |
| 115 | | case Array: |
| 116 | | var result = exp.evaluate( |
| 117 | | context, |
| 118 | | XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, |
| 119 | | null |
| 120 | | ); |
| 121 | | var ret = []; |
| 122 | | for (var i = 0, len = result.snapshotLength; i < len; i++) { |
| 123 | | ret.push(result.snapshotItem(i)); |
| | 96 | switch (type) { |
| | 97 | case String: |
| | 98 | return exp.evaluate( |
| | 99 | context, |
| | 100 | XPathResult.STRING_TYPE, |
| | 101 | null |
| | 102 | ).stringValue; |
| | 103 | case Number: |
| | 104 | return exp.evaluate( |
| | 105 | context, |
| | 106 | XPathResult.NUMBER_TYPE, |
| | 107 | null |
| | 108 | ).numberValue; |
| | 109 | case Boolean: |
| | 110 | return exp.evaluate( |
| | 111 | context, |
| | 112 | XPathResult.BOOLEAN_TYPE, |
| | 113 | null |
| | 114 | ).booleanValue; |
| | 115 | case Array: |
| | 116 | var result = exp.evaluate( |
| | 117 | context, |
| | 118 | XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, |
| | 119 | null |
| | 120 | ); |
| | 121 | var ret = []; |
| | 122 | for (var i = 0, len = result.snapshotLength; i < len; i++) { |
| | 123 | ret.push(result.snapshotItem(i)); |
| | 124 | } |
| | 125 | return ret; |
| | 126 | case undefined: |
| | 127 | var result = exp.evaluate(context, XPathResult.ANY_TYPE, null); |
| | 128 | switch (result.resultType) { |
| | 129 | case XPathResult.STRING_TYPE : return result.stringValue; |
| | 130 | case XPathResult.NUMBER_TYPE : return result.numberValue; |
| | 131 | case XPathResult.BOOLEAN_TYPE: return result.booleanValue; |
| | 132 | case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: { |
| | 133 | // not ensure the order. |
| | 134 | var ret = []; |
| | 135 | var i = null; |
| | 136 | while (i = result.iterateNext()) { |
| | 137 | ret.push(i); |
| | 138 | } |
| | 139 | return ret; |