Reworked FirstElement/NextElement
authorkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Tue, 26 May 2009 15:50:44 +0000 (15:50 +0000)
committerkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Tue, 26 May 2009 15:50:44 +0000 (15:50 +0000)
git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@412 3cdefd35-fc62-479d-8e8d-bae585ffb9ca

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