summaryrefslogtreecommitdiff
path: root/cpp/src/XMLTransform/XMLTransform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/XMLTransform/XMLTransform.cpp')
-rw-r--r--cpp/src/XMLTransform/XMLTransform.cpp41
1 files changed, 23 insertions, 18 deletions
diff --git a/cpp/src/XMLTransform/XMLTransform.cpp b/cpp/src/XMLTransform/XMLTransform.cpp
index f3c7ad75578..9997baed84c 100644
--- a/cpp/src/XMLTransform/XMLTransform.cpp
+++ b/cpp/src/XMLTransform/XMLTransform.cpp
@@ -894,28 +894,33 @@ public:
os << ::IceUtil::attr("length", lstr.str());
- for(i = 0; i < children->getLength(); ++i)
+ if(l != 0)
{
- DOMNode* child = children->item(i);
- if(child->getNodeType() != DOMNode::ELEMENT_NODE)
+ for(i = 0; i < children->getLength(); ++i)
{
- continue;
- }
+ DOMNode* child = children->item(i);
+ if(child->getNodeType() != DOMNode::ELEMENT_NODE)
+ {
+ continue;
+ }
- string nodeName = toString(child->getLocalName());
- if(l == 0 || nodeName != "e")
- {
- throw SchemaViolation(__FILE__, __LINE__);
- }
+ string nodeName = toString(child->getLocalName());
+ if(nodeName != "e")
+ {
+ SchemaViolation ex(__FILE__, __LINE__);
+ ex.reason = "invalid sequence element name: " + nodeName;
+ throw ex;
+ }
- try
- {
- _transform->transform(os, info, nodeName, child, map);
- }
- catch(const MissingTypeException&)
- {
- // Skip this element
- }
+ try
+ {
+ _transform->transform(os, info, nodeName, child, map);
+ }
+ catch(const MissingTypeException&)
+ {
+ // Skip this element
+ }
+ }
}
os << ::IceUtil::ee;