OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2005 Frerich Raabe <raabe@kde.org> | 2 * Copyright (C) 2005 Frerich Raabe <raabe@kde.org> |
3 * Copyright (C) 2006, 2009 Apple Inc. | 3 * Copyright (C) 2006, 2009 Apple Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 24 matching lines...) Expand all Loading... |
35 namespace XPath { | 35 namespace XPath { |
36 | 36 |
37 bool isRootDomNode(Node* node) | 37 bool isRootDomNode(Node* node) |
38 { | 38 { |
39 return node && !node->parentNode(); | 39 return node && !node->parentNode(); |
40 } | 40 } |
41 | 41 |
42 String stringValue(Node* node) | 42 String stringValue(Node* node) |
43 { | 43 { |
44 switch (node->nodeType()) { | 44 switch (node->nodeType()) { |
45 case Node::ATTRIBUTE_NODE: | 45 case Node::ATTRIBUTE_NODE: |
46 case Node::PROCESSING_INSTRUCTION_NODE: | 46 case Node::PROCESSING_INSTRUCTION_NODE: |
47 case Node::COMMENT_NODE: | 47 case Node::COMMENT_NODE: |
48 case Node::TEXT_NODE: | 48 case Node::TEXT_NODE: |
49 case Node::CDATA_SECTION_NODE: | 49 case Node::CDATA_SECTION_NODE: |
50 return node->nodeValue(); | 50 return node->nodeValue(); |
51 default: | 51 default: |
52 if (isRootDomNode(node) || node->isElementNode()) { | 52 if (isRootDomNode(node) || node->isElementNode()) { |
53 StringBuilder result; | 53 StringBuilder result; |
54 result.reserveCapacity(1024); | 54 result.reserveCapacity(1024); |
55 | 55 |
56 for (Node* n = node->firstChild(); n; n = NodeTraversal::next(*n
, node)) { | 56 for (Node* n = node->firstChild(); n; n = NodeTraversal::next(*n, no
de)) { |
57 if (n->isTextNode()) { | 57 if (n->isTextNode()) { |
58 const String& nodeValue = n->nodeValue(); | 58 const String& nodeValue = n->nodeValue(); |
59 result.append(nodeValue); | 59 result.append(nodeValue); |
60 } | |
61 } | 60 } |
| 61 } |
62 | 62 |
63 return result.toString(); | 63 return result.toString(); |
64 } | 64 } |
65 } | 65 } |
66 | 66 |
67 return String(); | 67 return String(); |
68 } | 68 } |
69 | 69 |
70 bool isValidContextNode(Node* node) | 70 bool isValidContextNode(Node* node) |
71 { | 71 { |
72 if (!node) | 72 if (!node) |
73 return false; | 73 return false; |
74 switch (node->nodeType()) { | 74 switch (node->nodeType()) { |
75 case Node::ATTRIBUTE_NODE: | 75 case Node::ATTRIBUTE_NODE: |
76 case Node::CDATA_SECTION_NODE: | 76 case Node::CDATA_SECTION_NODE: |
77 case Node::COMMENT_NODE: | 77 case Node::COMMENT_NODE: |
78 case Node::DOCUMENT_NODE: | 78 case Node::DOCUMENT_NODE: |
79 case Node::ELEMENT_NODE: | 79 case Node::ELEMENT_NODE: |
80 case Node::PROCESSING_INSTRUCTION_NODE: | 80 case Node::PROCESSING_INSTRUCTION_NODE: |
81 return true; | 81 return true; |
82 case Node::DOCUMENT_FRAGMENT_NODE: | 82 case Node::DOCUMENT_FRAGMENT_NODE: |
83 case Node::DOCUMENT_TYPE_NODE: | 83 case Node::DOCUMENT_TYPE_NODE: |
84 return false; | 84 return false; |
85 case Node::TEXT_NODE: | 85 case Node::TEXT_NODE: |
86 return !(node->parentNode() && node->parentNode()->isAttributeNode()
); | 86 return !(node->parentNode() && node->parentNode()->isAttributeNode()); |
87 } | 87 } |
88 ASSERT_NOT_REACHED(); | 88 ASSERT_NOT_REACHED(); |
89 return false; | 89 return false; |
90 } | 90 } |
91 | 91 |
92 } | 92 } |
93 } | 93 } |
OLD | NEW |