Ejemplo n.º 1
0
 void do_characters(const std::string& ch)
 {
   DOM::Node<std::string> lc = current().getLastChild();
   if(lc == 0 || lc.getNodeType() != DOM::Node_base::TEXT_NODE)
     current().appendChild(document().createTextNode(ch));
   else
     lc.setNodeValue(lc.getNodeValue() + ch);
 } // do_characters
Ejemplo n.º 2
0
 void copy(const DOM::Node<std::string>& node, ExecutionContext& context) const
 {
   switch(node.getNodeType())
   {
   case DOM::Node_base::ATTRIBUTE_NODE:
     context.sink().add_attribute(node.getNamespaceURI(),
                                  node.getLocalName(),
                                  node.getNodeName(),
                                  node.getNodeValue());
     break;
   case DOM::Node_base::COMMENT_NODE:
     context.sink().start_comment();
     context.sink().characters(node.getNodeValue());
     context.sink().end_comment();
     break;
   case DOM::Node_base::DOCUMENT_NODE:
   case DOM::Node_base::DOCUMENT_FRAGMENT_NODE:
     process_content(node, context);
     break;
   case DOM::Node_base::ELEMENT_NODE:
     if(context.sink().start_element(node.getPrefix(), node.getLocalName(), node.getNamespaceURI()))
     {
       process_content(node, context);
       context.sink().end_element(node.getPrefix(), node.getLocalName(), node.getNamespaceURI());
     }
     break;
   case DOM::Node_base::PROCESSING_INSTRUCTION_NODE:
     context.sink().start_processing_instruction(node.getNodeName());
     context.sink().characters(node.getNodeValue());
     context.sink().end_processing_instruction();
     break;
   case DOM::Node_base::TEXT_NODE:
   case DOM::Node_base::CDATA_SECTION_NODE:
     context.sink().characters(node.getNodeValue());
     break;
   } // switch
 } // execute
Ejemplo n.º 3
0
 void do_end_CDATA()
 {
   DOM::Node<std::string> lc = current().getLastChild();
   if(lc.getNodeType() == DOM::Node_base::TEXT_NODE)
     current().replaceChild(document().createCDATASection(lc.getNodeValue()), lc);
 } // do_end_CDATA