|
|
| version 1.65, 2004/02/11 15:33:13 | version 1.71, 2005/08/09 08:14:48 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: @b dom parser class. | Parser: @b dom parser class. |
| Copyright (c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| */ | */ |
| #include "classes.h" | #include "classes.h" |
| Line 19 static const char * const IDENT_XNODE_C= | Line 19 static const char * const IDENT_XNODE_C= |
| #include "pa_xml_exception.h" | #include "pa_xml_exception.h" |
| #include "xnode.h" | #include "xnode.h" |
| extern "C" { | |
| #include "gdomecore/gdome-xml-node.h" | |
| #include "gdomecore/gdome-xml-document.h" | |
| }; | |
| #include "gdome.h" | |
| #include "libxml/xpath.h" | #include "libxml/xpath.h" |
| #include "libxml/xpathInternals.h" | |
| // global variable | // global variable |
| Line 144 static void _insertBefore(Request& r, Me | Line 139 static void _insertBefore(Request& r, Me |
| GdomeException exc; | GdomeException exc; |
| if(GdomeNode* retNode=gdome_n_insertBefore(selfNode, newChild, refChild, &exc)) { | if(GdomeNode* retNode=gdome_n_insertBefore(selfNode, newChild, refChild, &exc)) { |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, retNode)); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), retNode)); |
| } else | } else |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| Line 159 static void _replaceChild(Request& r, Me | Line 154 static void _replaceChild(Request& r, Me |
| GdomeException exc; | GdomeException exc; |
| if(GdomeNode* retNode=gdome_n_replaceChild(selfNode, newChild, oldChild, &exc)) { | if(GdomeNode* retNode=gdome_n_replaceChild(selfNode, newChild, oldChild, &exc)) { |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, retNode)); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), retNode)); |
| } else | } else |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| Line 173 static void _removeChild(Request& r, Met | Line 168 static void _removeChild(Request& r, Met |
| GdomeException exc; | GdomeException exc; |
| if(GdomeNode* retNode=gdome_n_removeChild(selfNode, oldChild, &exc)) { | if(GdomeNode* retNode=gdome_n_removeChild(selfNode, oldChild, &exc)) { |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, retNode)); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), retNode)); |
| } else | } else |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| Line 187 static void _appendChild(Request& r, Met | Line 182 static void _appendChild(Request& r, Met |
| GdomeException exc; | GdomeException exc; |
| if(GdomeNode* retNode=gdome_n_appendChild(selfNode, newChild, &exc)) { | if(GdomeNode* retNode=gdome_n_appendChild(selfNode, newChild, &exc)) { |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, retNode)); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), retNode)); |
| } else | } else |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| Line 212 static void _cloneNode(Request& r, Metho | Line 207 static void _cloneNode(Request& r, Metho |
| GdomeException exc; | GdomeException exc; |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, gdome_n_cloneNode(node, deep, &exc))); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), gdome_n_cloneNode(node, deep, &exc))); |
| } | } |
| // DOM1 element | // DOM1 element |
| GdomeElement* get_self_element(Request& r) { | GdomeElement* get_self_element(VXnode& vnode) { |
| VXnode& vnode=GET_SELF(r, VXnode); | |
| GdomeNode* node=vnode.get_node(); | GdomeNode* node=vnode.get_node(); |
| GdomeException exc; | GdomeException exc; |
| Line 234 GdomeElement* get_self_element(Request& | Line 228 GdomeElement* get_self_element(Request& |
| /// @bug attribute_value must be freed! [// DOMString getAttribute(in DOMString name); | /// @bug attribute_value must be freed! [// DOMString getAttribute(in DOMString name); |
| static void _getAttribute(Request& r, MethodParams& params) { | static void _getAttribute(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& name=params.as_string(0, "name must be string"); | const String& name=params.as_string(0, "name must be string"); |
| GdomeException exc; | GdomeException exc; |
| GdomeDOMString *attribute_value= | GdomeDOMString *attribute_value= |
| gdome_el_getAttribute(element, r.transcode(name).use(), &exc); | gdome_el_getAttribute(element, r.transcode(name).use(), &exc); |
| // write out result | // write out result |
| r.write_no_lang(r.transcode(attribute_value)); | r.write_pass_lang(r.transcode(attribute_value)); |
| } | } |
| // void setAttribute(in DOMString name, in DOMString value) raises(DOMException); | // void setAttribute(in DOMString name, in DOMString value) raises(DOMException); |
| static void _setAttribute(Request& r, MethodParams& params) { | static void _setAttribute(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& name=params.as_string(0, "name must be string"); | const String& name=params.as_string(0, "name must be string"); |
| const String& attribute_value=params.as_string(1, "value must be string"); | const String& attribute_value=params.as_string(1, "value must be string"); |
| Line 261 static void _setAttribute(Request& r, Me | Line 257 static void _setAttribute(Request& r, Me |
| // void removeAttribute(in DOMString name) raises(DOMException); | // void removeAttribute(in DOMString name) raises(DOMException); |
| static void _removeAttribute(Request& r, MethodParams& params) { | static void _removeAttribute(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& name=params.as_string(0, "name must be string"); | const String& name=params.as_string(0, "name must be string"); |
| GdomeException exc; | GdomeException exc; |
| Line 272 static void _removeAttribute(Request& r, | Line 269 static void _removeAttribute(Request& r, |
| // Attr getAttributeNode(in DOMString name); | // Attr getAttributeNode(in DOMString name); |
| static void _getAttributeNode(Request& r, MethodParams& params) { | static void _getAttributeNode(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& name=params.as_string(0, "name must be string"); | const String& name=params.as_string(0, "name must be string"); |
| GdomeException exc; | GdomeException exc; |
| if(GdomeAttr *attr=gdome_el_getAttributeNode(element, | if(GdomeAttr *attr=gdome_el_getAttributeNode(element, |
| r.transcode(name).use(), &exc)) { | r.transcode(name).use(), &exc)) { |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, (GdomeNode* )attr)); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), (GdomeNode* )attr)); |
| } else if(exc) | } else if(exc) |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| // Attr setAttributeNode(in Attr newAttr) raises(DOMException); | // Attr setAttributeNode(in Attr newAttr) raises(DOMException); |
| static void _setAttributeNode(Request& r, MethodParams& params) { | static void _setAttributeNode(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| GdomeAttr * newAttr=as_attr(params, 0, "newAttr must be ATTRIBUTE node"); | GdomeAttr * newAttr=as_attr(params, 0, "newAttr must be ATTRIBUTE node"); |
| GdomeException exc; | GdomeException exc; |
| if(GdomeAttr *returnAttr=gdome_el_setAttributeNode(element, newAttr, &exc)) { | if(GdomeAttr *returnAttr=gdome_el_setAttributeNode(element, newAttr, &exc)) { |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, (GdomeNode* )returnAttr)); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), (GdomeNode* )returnAttr)); |
| } else | } else |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| // Attr removeAttributeNode(in Attr oldAttr) raises(DOMException); | // Attr removeAttributeNode(in Attr oldAttr) raises(DOMException); |
| static void _removeAttributeNode(Request& r, MethodParams& params) { | static void _removeAttributeNode(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| GdomeAttr * oldAttr=as_attr(params, 0, "oldAttr must be ATTRIBUTE node"); | GdomeAttr * oldAttr=as_attr(params, 0, "oldAttr must be ATTRIBUTE node"); |
| GdomeException exc; | GdomeException exc; |
| Line 310 static void _removeAttributeNode(Request | Line 310 static void _removeAttributeNode(Request |
| // NodeList getElementsByTagName(in DOMString name); | // NodeList getElementsByTagName(in DOMString name); |
| static void _getElementsByTagName(Request& r, MethodParams& params) { | static void _getElementsByTagName(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& name=params.as_string(0, "name must be string"); | const String& name=params.as_string(0, "name must be string"); |
| Line 322 static void _getElementsByTagName(Reques | Line 323 static void _getElementsByTagName(Reques |
| for(gulong i=0; i<length; i++) | for(gulong i=0; i<length; i++) |
| result.hash().put( | result.hash().put( |
| String::Body::Format(i), | String::Body::Format(i), |
| new VXnode(&r.charsets, gdome_nl_item(nodes, i, &exc))); | new VXnode(&r.charsets, vnode.get_xdoc(), gdome_nl_item(nodes, i, &exc))); |
| } else if(exc) | } else if(exc) |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| Line 334 static void _getElementsByTagName(Reques | Line 335 static void _getElementsByTagName(Reques |
| // DOMString getAttributeNS(in DOMString namespaceURI, in DOMString localName); | // DOMString getAttributeNS(in DOMString namespaceURI, in DOMString localName); |
| static void _getAttributeNS(Request& r, MethodParams& params) { | static void _getAttributeNS(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); | const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); |
| const String& localName=params.as_string(0, "localName must be string"); | const String& localName=params.as_string(0, "localName must be string"); |
| Line 345 static void _getAttributeNS(Request& r, | Line 347 static void _getAttributeNS(Request& r, |
| r.transcode(namespaceURI).use(), | r.transcode(namespaceURI).use(), |
| r.transcode(localName).use(), &exc); | r.transcode(localName).use(), &exc); |
| // write out result | // write out result |
| r.write_no_lang(r.transcode(attribute_value)); | r.write_pass_lang(r.transcode(attribute_value)); |
| } | } |
| // void setAttributeNS(in DOMString namespaceURI, in DOMString qualifiedName, in DOMString value) raises(DOMException); | // void setAttributeNS(in DOMString namespaceURI, in DOMString qualifiedName, in DOMString value) raises(DOMException); |
| static void _setAttributeNS(Request& r, MethodParams& params) { | static void _setAttributeNS(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); | const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); |
| const String& qualifiedName=params.as_string(1, "qualifiedName must be string"); | const String& qualifiedName=params.as_string(1, "qualifiedName must be string"); |
| const String& attribute_value=params.as_string(2, "value must be string"); | const String& attribute_value=params.as_string(2, "value must be string"); |
| Line 367 static void _setAttributeNS(Request& r, | Line 370 static void _setAttributeNS(Request& r, |
| // void removeAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException); | // void removeAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException); |
| static void _removeAttributeNS(Request& r, MethodParams& params) { | static void _removeAttributeNS(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); | const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); |
| const String& localName=params.as_string(1, "localName must be string"); | const String& localName=params.as_string(1, "localName must be string"); |
| Line 382 static void _removeAttributeNS(Request& | Line 386 static void _removeAttributeNS(Request& |
| // Attr getAttributeNodeNS(in DOMString namespaceURI, in DOMString localName); | // Attr getAttributeNodeNS(in DOMString namespaceURI, in DOMString localName); |
| static void _getAttributeNodeNS(Request& r, MethodParams& params) { | static void _getAttributeNodeNS(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); | const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); |
| const String& name=params.as_string(1, "name must be string"); | const String& name=params.as_string(1, "name must be string"); |
| Line 390 static void _getAttributeNodeNS(Request& | Line 395 static void _getAttributeNodeNS(Request& |
| if(GdomeAttr *attr=gdome_el_getAttributeNodeNS(element, | if(GdomeAttr *attr=gdome_el_getAttributeNodeNS(element, |
| r.transcode(namespaceURI).use(), r.transcode(name).use(), &exc)) { | r.transcode(namespaceURI).use(), r.transcode(name).use(), &exc)) { |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, (GdomeNode* )attr)); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), (GdomeNode* )attr)); |
| } else if(exc) | } else if(exc) |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| // Attr setAttributeNodeNS(in Attr newAttr) raises(DOMException); | // Attr setAttributeNodeNS(in Attr newAttr) raises(DOMException); |
| static void _setAttributeNodeNS(Request& r, MethodParams& params) { | static void _setAttributeNodeNS(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| GdomeAttr * newAttr=as_attr(params, 0, "newAttr must be ATTRIBUTE node"); | GdomeAttr * newAttr=as_attr(params, 0, "newAttr must be ATTRIBUTE node"); |
| GdomeException exc; | GdomeException exc; |
| if(GdomeAttr *returnAttr=gdome_el_setAttributeNodeNS(element, newAttr, &exc)) { | if(GdomeAttr *returnAttr=gdome_el_setAttributeNodeNS(element, newAttr, &exc)) { |
| // write out result | // write out result |
| r.write_no_lang(*new VXnode(&r.charsets, (GdomeNode* )returnAttr)); | r.write_no_lang(*new VXnode(&r.charsets, vnode.get_xdoc(), (GdomeNode* )returnAttr)); |
| } else | } else |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| // boolean hasAttribute(in DOMString name) raises(DOMException); | // boolean hasAttribute(in DOMString name) raises(DOMException); |
| static void _hasAttribute(Request& r, MethodParams& params) { | static void _hasAttribute(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& name=params.as_string(0, "name must be string"); | const String& name=params.as_string(0, "name must be string"); |
| Line 424 static void _hasAttribute(Request& r, Me | Line 431 static void _hasAttribute(Request& r, Me |
| // boolean hasAttributeNS(n DOMString namespaceURI, in DOMString localName) raises(DOMException); | // boolean hasAttributeNS(n DOMString namespaceURI, in DOMString localName) raises(DOMException); |
| static void _hasAttributeNS(Request& r, MethodParams& params) { | static void _hasAttributeNS(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); | const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); |
| const String& localName=params.as_string(1, "localName must be string"); | const String& localName=params.as_string(1, "localName must be string"); |
| Line 439 static void _hasAttributeNS(Request& r, | Line 447 static void _hasAttributeNS(Request& r, |
| } | } |
| static void _getElementsByTagNameNS(Request& r, MethodParams& params) { | static void _getElementsByTagNameNS(Request& r, MethodParams& params) { |
| GdomeElement* element=get_self_element(r); | VXnode& vnode=GET_SELF(r, VXnode); |
| GdomeElement* element=get_self_element(vnode); | |
| // namespaceURI;localName | // namespaceURI;localName |
| const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); | const String& namespaceURI=params.as_string(0, "namespaceURI must be string"); |
| Line 457 static void _getElementsByTagNameNS(Requ | Line 466 static void _getElementsByTagNameNS(Requ |
| for(gulong i=0; i<length; i++) | for(gulong i=0; i<length; i++) |
| result.hash().put( | result.hash().put( |
| String::Body::Format(i), | String::Body::Format(i), |
| new VXnode(&r.charsets, gdome_nl_item(nodes, i, &exc))); | new VXnode(&r.charsets, vnode.get_xdoc(), gdome_nl_item(nodes, i, &exc))); |
| } | } |
| // write out result | // write out result |
| Line 475 static void _normalize(Request& r, Metho | Line 484 static void _normalize(Request& r, Metho |
| throw XmlException(0, exc); | throw XmlException(0, exc); |
| } | } |
| #ifndef DOXYGEN | |
| struct Register_one_ns_info { | |
| Request* r; | |
| xmlXPathContextPtr ctxt; | |
| }; | |
| #endif | |
| static void register_one_ns( | |
| HashStringValue::key_type key, | |
| HashStringValue::value_type value, | |
| Register_one_ns_info* info) { | |
| if(const String* svalue=value->get_string()) | |
| xmlXPathRegisterNs(info->ctxt, | |
| BAD_CAST info->r->transcode(key)->str, | |
| BAD_CAST info->r->transcode(*svalue)->str); | |
| else | |
| throw Exception("parser.runtime", | |
| new String(key, String::L_TAINTED), | |
| "value is %s, must be string or number", value->type()); | |
| } | |
| static void _selectX(Request& r, MethodParams& params, | static void _selectX(Request& r, MethodParams& params, |
| void (*handler)(Request& r, | void (*handler)(Request& r, |
| const String& expression, | const String& expression, |
| xmlXPathObject_auto_ptr res, | xmlXPathObject_auto_ptr res, |
| VXdoc& xdoc, | |
| Value*& result)) { | Value*& result)) { |
| VXnode& vnode=GET_SELF(r, VXnode); | VXnode& vnode=GET_SELF(r, VXnode); |
| // expression | // expression |
| const String& expression=params.as_string(0, "expression must be string"); | const String& expression=params.as_string(0, "expression must be string"); |
| GdomeException exc; | GdomeException exc; |
| GdomeNode* dome_node=vnode.get_node(); | GdomeNode* dome_node=vnode.get_node(); |
| GdomeDocument *dome_document=gdome_n_ownerDocument(dome_node, &exc); | GdomeDocument *dome_document=gdome_n_ownerDocument(dome_node, &exc); |
| Line 492 static void _selectX(Request& r, MethodP | Line 520 static void _selectX(Request& r, MethodP |
| dome_document=GDOME_DOC(dome_node); // and we need downcast | dome_document=GDOME_DOC(dome_node); // and we need downcast |
| xmlDoc *xml_document=gdome_xml_doc_get_xmlDoc(dome_document); | xmlDoc *xml_document=gdome_xml_doc_get_xmlDoc(dome_document); |
| xmlXPathContext_auto_ptr ctxt(xmlXPathNewContext(xml_document)); | xmlXPathContext_auto_ptr ctxt(xmlXPathNewContext(xml_document)); |
| { | |
| Register_one_ns_info info={&r, ctxt.get()}; | |
| vnode.get_xdoc().search_namespaces.hash().for_each(register_one_ns, &info); | |
| } | |
| ctxt->node=gdome_xml_n_get_xmlNode(dome_node); | ctxt->node=gdome_xml_n_get_xmlNode(dome_node); |
| /*error to stderr for now*/ | /*error to stderr for now*/ |
| xmlXPathObject_auto_ptr res( | xmlXPathObject_auto_ptr res( |
| Line 504 static void _selectX(Request& r, MethodP | Line 536 static void _selectX(Request& r, MethodP |
| Value* result=0; | Value* result=0; |
| if(res.get()) | if(res.get()) |
| handler(r, expression, res, result); | handler(r, expression, res, vnode.get_xdoc(), result); |
| if(result) | if(result) |
| r.write_no_lang(*result); | r.write_no_lang(*result); |
| } | } |
| Line 512 static void _selectX(Request& r, MethodP | Line 544 static void _selectX(Request& r, MethodP |
| static void selectNodesHandler(Request& r, | static void selectNodesHandler(Request& r, |
| const String& expression, | const String& expression, |
| xmlXPathObject_auto_ptr res, | xmlXPathObject_auto_ptr res, |
| VXdoc& xdoc, | |
| Value*& result) { | Value*& result) { |
| VHash& vhash=*new VHash; result=&vhash; | VHash& vhash=*new VHash; result=&vhash; |
| switch(res->type) { | switch(res->type) { |
| Line 526 static void selectNodesHandler(Request& | Line 559 static void selectNodesHandler(Request& |
| String::Body::Format(i), | String::Body::Format(i), |
| new VXnode( | new VXnode( |
| &r.charsets, | &r.charsets, |
| xdoc, | |
| gdome_xml_n_mkref(res->nodesetval->nodeTab[i]))); | gdome_xml_n_mkref(res->nodesetval->nodeTab[i]))); |
| } | } |
| break; | break; |
| Line 539 static void selectNodesHandler(Request& | Line 573 static void selectNodesHandler(Request& |
| static void selectNodeHandler(Request& r, | static void selectNodeHandler(Request& r, |
| const String& expression, | const String& expression, |
| xmlXPathObject_auto_ptr res, | xmlXPathObject_auto_ptr res, |
| Value*& result) { | VXdoc& xdoc, |
| Value*& result) { | |
| switch(res->type) { | switch(res->type) { |
| case XPATH_UNDEFINED: | case XPATH_UNDEFINED: |
| break; | break; |
| Line 553 static void selectNodeHandler(Request& r | Line 588 static void selectNodeHandler(Request& r |
| result=new VXnode( | result=new VXnode( |
| &r.charsets, | &r.charsets, |
| xdoc, | |
| gdome_xml_n_mkref(res->nodesetval->nodeTab[0])); | gdome_xml_n_mkref(res->nodesetval->nodeTab[0])); |
| } | } |
| break; | break; |
| Line 577 static void selectNodeHandler(Request& r | Line 613 static void selectNodeHandler(Request& r |
| static void selectBoolHandler(Request&, | static void selectBoolHandler(Request&, |
| const String& expression, | const String& expression, |
| xmlXPathObject_auto_ptr res, | xmlXPathObject_auto_ptr res, |
| VXdoc& /*xdoc*/, | |
| Value*& result) { | Value*& result) { |
| switch(res->type) { | switch(res->type) { |
| case XPATH_BOOLEAN: | case XPATH_BOOLEAN: |
| Line 597 static void selectBoolHandler(Request&, | Line 634 static void selectBoolHandler(Request&, |
| static void selectNumberHandler(Request&, | static void selectNumberHandler(Request&, |
| const String& expression, | const String& expression, |
| xmlXPathObject_auto_ptr res, | xmlXPathObject_auto_ptr res, |
| VXdoc& /*xdoc*/, | |
| Value*& result) { | Value*& result) { |
| switch(res->type) { | switch(res->type) { |
| case XPATH_NUMBER: | case XPATH_NUMBER: |
| Line 617 static void selectNumberHandler(Request& | Line 655 static void selectNumberHandler(Request& |
| static void selectStringHandler(Request& r, | static void selectStringHandler(Request& r, |
| const String& expression, | const String& expression, |
| xmlXPathObject_auto_ptr res, | xmlXPathObject_auto_ptr res, |
| VXdoc& /*xdoc*/, | |
| Value*& result) { | Value*& result) { |
| switch(res->type) { | switch(res->type) { |
| case XPATH_UNDEFINED: | case XPATH_UNDEFINED: |