Reworked FirstElement/NextElement
[SXSI/XMLTree.git] / XMLTree.cpp
index 1d01a76..e68ef30 100644 (file)
@@ -440,8 +440,11 @@ treeNode XMLTree::FirstElement(treeNode x)
  {\r
    NULLT_IF(x==NULLT);\r
    treeNode fc = first_child(Par, x);\r
-   //<$> is 2\r
-   return ((fc == NULLT || Tag(fc) != PCDATA_TAG_ID) ? fc : next_sibling(Par,fc));\r
+   NULLT_IF(fc == NULLT);\r
+   TagType tag = Tag(fc);\r
+   if (tag != PCDATA_TAG_ID && tag != ATTRIBUTE_TAG_ID) \r
+     return fc;\r
+   else return next_sibling(Par,fc);\r
 \r
  }\r
 \r
@@ -449,7 +452,11 @@ treeNode XMLTree::NextElement(treeNode x)
 {\r
    NULLT_IF(x==NULLT);\r
    treeNode ns = next_sibling(Par, x);\r
-   return ((ns == NULLT || Tag(ns) != PCDATA_TAG_ID) ? ns : next_sibling(Par,ns));\r
+   NULLT_IF(ns == NULLT);\r
+   TagType tag = Tag(ns);\r
+   if (tag != PCDATA_TAG_ID && tag != ATTRIBUTE_TAG_ID) \r
+     return ns;\r
+   else return next_sibling(Par,ns);\r
 }\r
 \r
 // LastChild(x): returns the last child of node x.\r