{
xmlChar *prefix = sxe->iter.nsprefix;
int isprefix = sxe->iter.isprefix;
- int test_elem = sxe->iter.type == SXE_ITER_ELEMENT && sxe->iter.name;
- int test_attr = sxe->iter.type == SXE_ITER_ATTRLIST && sxe->iter.name;
- while (node) {
- SKIP_TEXT(node);
- if (sxe->iter.type != SXE_ITER_ATTRLIST && node->type == XML_ELEMENT_NODE) {
- if ((!test_elem || !xmlStrcmp(node->name, sxe->iter.name)) && match_ns(sxe, node, prefix, isprefix)) {
- break;
+ if (sxe->iter.type == SXE_ITER_ATTRLIST) {
+ if (sxe->iter.name) {
+ while (node) {
+ if (node->type == XML_ATTRIBUTE_NODE) {
+ if (!xmlStrcmp(node->name, sxe->iter.name) && match_ns(sxe, node, prefix, isprefix)) {
+ break;
+ }
+ }
+ node = node->next;
}
- } else if (node->type == XML_ATTRIBUTE_NODE) {
- if ((!test_attr || !xmlStrcmp(node->name, sxe->iter.name)) && match_ns(sxe, node, prefix, isprefix)) {
- break;
+ } else {
+ while (node) {
+ if (node->type == XML_ATTRIBUTE_NODE) {
+ if (match_ns(sxe, node, prefix, isprefix)) {
+ break;
+ }
+ }
+ node = node->next;
}
}
-next_iter:
- node = node->next;
+ } else if (sxe->iter.type == SXE_ITER_ELEMENT && sxe->iter.name) {
+ while (node) {
+ if (node->type == XML_ELEMENT_NODE) {
+ if (!xmlStrcmp(node->name, sxe->iter.name) && match_ns(sxe, node, prefix, isprefix)) {
+ break;
+ }
+ }
+ node = node->next;
+ }
+ } else {
+ while (node) {
+ if (node->type == XML_ELEMENT_NODE) {
+ if (match_ns(sxe, node, prefix, isprefix)) {
+ break;
+ }
+ }
+ node = node->next;
+ }
}
if (node && use_data) {