* xmlTextReaderReadAttributeValue: * @reader: the xmlTextReaderPtr used * * Parses an attribute value into one or more Text and EntityReference nodes. * * Returns 1 in case of success, 0 if the reader was not positioned on an * attribute node or all the attribute values have been read, or -1 * in case of error. */
| 2885 | * in case of error. |
| 2886 | */ |
| 2887 | int |
| 2888 | xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader) { |
| 2889 | if (reader == NULL) |
| 2890 | return(-1); |
| 2891 | if (reader->node == NULL) |
| 2892 | return(-1); |
| 2893 | if (reader->curnode == NULL) |
| 2894 | return(0); |
| 2895 | if (reader->curnode->type == XML_ATTRIBUTE_NODE) { |
| 2896 | if (reader->curnode->children == NULL) |
| 2897 | return(0); |
| 2898 | reader->curnode = reader->curnode->children; |
| 2899 | } else if (reader->curnode->type == XML_NAMESPACE_DECL) { |
| 2900 | xmlNsPtr ns = (xmlNsPtr) reader->curnode; |
| 2901 | |
| 2902 | if (reader->faketext == NULL) { |
| 2903 | reader->faketext = xmlNewDocText(reader->node->doc, |
| 2904 | ns->href); |
| 2905 | if (reader->faketext == NULL) { |
| 2906 | xmlTextReaderErrMemory(reader); |
| 2907 | return(-1); |
| 2908 | } |
| 2909 | } else { |
| 2910 | if ((reader->faketext->content != NULL) && |
| 2911 | (reader->faketext->content != |
| 2912 | (xmlChar *) &(reader->faketext->properties))) |
| 2913 | xmlFree(reader->faketext->content); |
| 2914 | if (ns->href == NULL) { |
| 2915 | reader->faketext->content = NULL; |
| 2916 | } else { |
| 2917 | reader->faketext->content = xmlStrdup(ns->href); |
| 2918 | if (reader->faketext->content == NULL) { |
| 2919 | xmlTextReaderErrMemory(reader); |
| 2920 | return(-1); |
| 2921 | } |
| 2922 | } |
| 2923 | } |
| 2924 | reader->curnode = reader->faketext; |
| 2925 | } else { |
| 2926 | if (reader->curnode->next == NULL) |
| 2927 | return(0); |
| 2928 | reader->curnode = reader->curnode->next; |
| 2929 | } |
| 2930 | return(1); |
| 2931 | } |
| 2932 | |
| 2933 | /** |
| 2934 | * xmlTextReaderConstEncoding: |
nothing calls this directly
no test coverage detected