|
|
| version 1.76, 2007/02/03 18:08:38 | version 1.78, 2007/08/20 08:56:46 |
|---|---|
| Line 102 xmlNode& as_node(MethodParams& params, i | Line 102 xmlNode& as_node(MethodParams& params, i |
| if(Value* vxnode=value.as(VXNODE_TYPE, false)) | if(Value* vxnode=value.as(VXNODE_TYPE, false)) |
| return static_cast<VXnode*>(vxnode)->get_xmlnode(); | return static_cast<VXnode*>(vxnode)->get_xmlnode(); |
| else | else |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| msg); | msg); |
| } | } |
| Line 114 xmlChar* as_xmlchar(Request& r, MethodPa | Line 114 xmlChar* as_xmlchar(Request& r, MethodPa |
| xmlAttr& as_attr(MethodParams& params, int index, const char* msg) { | xmlAttr& as_attr(MethodParams& params, int index, const char* msg) { |
| xmlNode& xmlnode=as_node(params, index, msg); | xmlNode& xmlnode=as_node(params, index, msg); |
| if(xmlnode.type!=XML_ATTRIBUTE_NODE) | if(xmlnode.type!=XML_ATTRIBUTE_NODE) |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| msg); | msg); |
| Line 171 xmlNs& pa_xmlMapNs(xmlDoc& doc, const xm | Line 171 xmlNs& pa_xmlMapNs(xmlDoc& doc, const xm |
| static void pa_addAttributeNode(xmlNode& selfNode, xmlAttr& attrNode) | static void pa_addAttributeNode(xmlNode& selfNode, xmlAttr& attrNode) |
| { | { |
| if(attrNode.type!=XML_ATTRIBUTE_NODE) | if(attrNode.type!=XML_ATTRIBUTE_NODE) |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| "must be ATTRIBUTE_NODE"); | "must be ATTRIBUTE_NODE"); |
| Line 354 xmlNode& get_self_element(VXnode& vnode) | Line 354 xmlNode& get_self_element(VXnode& vnode) |
| xmlNode& node=vnode.get_xmlnode(); | xmlNode& node=vnode.get_xmlnode(); |
| if(node.type!=XML_ELEMENT_NODE) | if(node.type!=XML_ELEMENT_NODE) |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| "method can only be called on nodes of ELEMENT type"); | "method can only be called on nodes of ELEMENT type"); |
| Line 576 static void _hasAttributeNS(Request& r, | Line 576 static void _hasAttributeNS(Request& r, |
| r.write_no_lang(*new VBool(prop!=0)); | r.write_no_lang(*new VBool(prop!=0)); |
| } | } |
| // boolean hasAttributes | |
| static void _hasAttributes(Request& r, MethodParams&) { | |
| VXnode& vnode=GET_SELF(r, VXnode); | |
| xmlNode& element=get_self_element(vnode); | |
| // write out result | |
| r.write_no_lang(*new VBool(element.properties!=0)); | |
| } | |
| static void _getElementsByTagNameNS(Request& r, MethodParams& params) { | static void _getElementsByTagNameNS(Request& r, MethodParams& params) { |
| VXnode& vnode=GET_SELF(r, VXnode); | VXnode& vnode=GET_SELF(r, VXnode); |
| VXdoc& vdoc=vnode.get_vxdoc(); | VXdoc& vdoc=vnode.get_vxdoc(); |
| Line 625 static void register_one_ns( | Line 634 static void register_one_ns( |
| info->r->transcode(key), | info->r->transcode(key), |
| info->r->transcode(*svalue)); | info->r->transcode(*svalue)); |
| else | else |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| new String(key, String::L_TAINTED), | new String(key, String::L_TAINTED), |
| "value is %s, must be string or number", value->type()); | "value is %s, must be string or number", value->type()); |
| } | } |
| Line 683 static void selectNodesHandler(Request&, | Line 692 static void selectNodesHandler(Request&, |
| } | } |
| break; | break; |
| default: | default: |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| &expression, | &expression, |
| "wrong xmlXPathEvalExpression result type (%d)", res->type); | "wrong xmlXPathEvalExpression result type (%d)", res->type); |
| break; // never | break; // never |
| Line 701 static void selectNodeHandler(Request& r | Line 710 static void selectNodeHandler(Request& r |
| case XPATH_NODESET: | case XPATH_NODESET: |
| if(res->nodesetval && res->nodesetval->nodeNr) { // empty result strangly has NODESET res->type | if(res->nodesetval && res->nodesetval->nodeNr) { // empty result strangly has NODESET res->type |
| if(res->nodesetval->nodeNr>1) | if(res->nodesetval->nodeNr>1) |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| &expression, | &expression, |
| "resulted not in a single node (%d)", res->nodesetval->nodeNr); | "resulted not in a single node (%d)", res->nodesetval->nodeNr); |
| Line 718 static void selectNodeHandler(Request& r | Line 727 static void selectNodeHandler(Request& r |
| result=new VString(r.transcode((xmlChar*)res->stringval)); | result=new VString(r.transcode((xmlChar*)res->stringval)); |
| break; | break; |
| default: | default: |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| &expression, | &expression, |
| "wrong xmlXPathEvalExpression result type (%d)", res->type); | "wrong xmlXPathEvalExpression result type (%d)", res->type); |
| } | } |
| Line 738 static void selectBoolHandler(Request&, | Line 747 static void selectBoolHandler(Request&, |
| break; | break; |
| // else[nodeset] fall down to default | // else[nodeset] fall down to default |
| default: | default: |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| &expression, | &expression, |
| "wrong xmlXPathEvalExpression result type (%d)", res->type); | "wrong xmlXPathEvalExpression result type (%d)", res->type); |
| break; // never | break; // never |
| Line 759 static void selectNumberHandler(Request& | Line 768 static void selectNumberHandler(Request& |
| break; | break; |
| // else[nodeset] fall down to default | // else[nodeset] fall down to default |
| default: | default: |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| &expression, | &expression, |
| "wrong xmlXPathEvalExpression result type (%d)", res->type); | "wrong xmlXPathEvalExpression result type (%d)", res->type); |
| break; // never | break; // never |
| Line 782 static void selectStringHandler(Request& | Line 791 static void selectStringHandler(Request& |
| break; | break; |
| // else[nodeset] fall down to default | // else[nodeset] fall down to default |
| default: | default: |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| &expression, | &expression, |
| "wrong xmlXPathEvalExpression result type (%d)", res->type); | "wrong xmlXPathEvalExpression result type (%d)", res->type); |
| break; // never | break; // never |
| Line 872 MXnode::MXnode(const char* aname, VState | Line 881 MXnode::MXnode(const char* aname, VState |
| add_native_method("hasAttribute", Method::CT_DYNAMIC, _hasAttribute, 1, 1); | add_native_method("hasAttribute", Method::CT_DYNAMIC, _hasAttribute, 1, 1); |
| // boolean hasAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException); | // boolean hasAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException); |
| add_native_method("hasAttributeNS", Method::CT_DYNAMIC, _hasAttributeNS, 2, 2); | add_native_method("hasAttributeNS", Method::CT_DYNAMIC, _hasAttributeNS, 2, 2); |
| // boolean hasAttributes | |
| add_native_method("hasAttributes", Method::CT_DYNAMIC, _hasAttributes, 0, 0); | |
| /// parser | /// parser |
| // ^node.select[/some/xpath/query] = hash $.#[dnode] | // ^node.select[/some/xpath/query] = hash $.#[dnode] |