You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by "tommy klehr (JIRA)" <xe...@xml.apache.org> on 2010/11/30 23:08:11 UTC

[jira] Created: (XERCESC-1953) extra newline after declaration in 1st use of DOMWriter

extra newline after declaration in 1st use of DOMWriter
-------------------------------------------------------

                 Key: XERCESC-1953
                 URL: https://issues.apache.org/jira/browse/XERCESC-1953
             Project: Xerces-C++
          Issue Type: Bug
          Components: DOM
    Affects Versions: 2.8.0
         Environment: Solaris 10
            Reporter: tommy klehr
            Priority: Minor



the sample program produces different output from DOMWriter although it's using the same input.
The first output has an extra newline after the declaration.  The second output has the document element on the same line as the declaration.

-------------------------------------------------

[mynah63.dev.sol10] $ ./tc                
impl = 4df4c
theSerializer = 58764
can set it to discarddefaultcontent
can set it to formatprettyprint
rc from writeNote() = 1
value = 
'<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<note> 
 <to>Tove</to> 
  <from>Jani</from>
  <heading>Reminder</heading>
  <salutation>Dear</salutation>
  <body>Don't forget me this weekend!</body> 
</note>
'
next take...
impl = 4df4c
theSerializer = 5a144
can set it to discarddefaultcontent
can set it to formatprettyprint
rc from writeNote() = 1
value = 
'<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><note> 
 <to>Tove</to> 
  <from>Jani</from>
  <heading>Reminder</heading>
  <salutation>Dear</salutation>
  <body>Don't forget me this weekend!</body> 
</note>
'
$ 
-------------------------------------------------

#include <assert.h>
#include <unistd.h>
#include <iostream.h>
#include <sstream>
#include <fstream>
#include <string.h>
#include <rw/cstring.h>

#include <xalanc/Include/PlatformDefinitions.hpp>
#include <xalanc/Include/XalanVector.hpp>

#include <xalanc/Include/STLHelper.hpp>
#include <xalanc/XalanDOM/XalanDocument.hpp>
#include <xalanc/XalanDOM/XalanElement.hpp>

#include <xalanc/PlatformSupport/DirectoryEnumerator.hpp>
#include <xalanc/PlatformSupport/DOMStringHelper.hpp>
#include <xalanc/PlatformSupport/ExecutionContext.hpp>

#include <xalanc/DOMSupport/DOMServices.hpp>

#include <xalanc/XPath/XObjectFactoryDefault.hpp>
#include <xalanc/XPath/XPath.hpp>
#include <xalanc/XPath/XPathConstructionContextDefault.hpp>
#include <xalanc/XPath/XPathEnvSupportDefault.hpp>
#include <xalanc/XPath/XPathExecutionContextDefault.hpp>
#include <xalanc/XPath/XPathInit.hpp>
#include <xalanc/XPath/XPathProcessorImpl.hpp>
#include <xalanc/XPath/XPathFactoryDefault.hpp>
#include <xalanc/XPath/XPathEvaluator.hpp>

#include <xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp>
#include <xalanc/XalanSourceTree/XalanSourceTreeInit.hpp>
#include <xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp>

#include <xalanc/XalanTransformer/XalanTransformer.hpp>
#include <xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp>
#include <xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.hpp>
#include <xalanc/XSLT/ProblemListener.hpp>

//These includes are for converting XML document into String
#include <xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp>
#include <xalanc/PlatformSupport/XalanStdOutputStream.hpp>
#include <xalanc/XMLSupport/FormatterToXML.hpp>
#include <xalanc/XMLSupport/FormatterTreeWalker.hpp>
#include <xalanc/XMLSupport/XMLSupportInit.hpp>
#include <xalanc/XercesParserLiaison/XercesDOMSupport.hpp>
#include <xalanc/XercesParserLiaison/XercesParserLiaison.hpp>
#include <xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp>
#include <xalanc/XalanDOM/XalanNodeList.hpp>
#include <xalanc/XalanDOM/XalanDOMException.hpp>
#include <xalanc/XPath/XalanXPathException.hpp>
#include <xalanc/XPath/XPathParserException.hpp>
//#include <xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp>


//For Xerces DOM usage
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/XMLException.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/dom/DOMNode.hpp>
#include <xercesc/dom/DOMNamedNodeMap.hpp>
//#include <xercesc/dom/DOMWriterFilter.hpp>
#include <xercesc/dom/DOMException.hpp>
#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/framework/LocalFileInputSource.hpp> // This is needed for const LocalFileInputSource      theInputSource(theFileName.c_str());
#include <xercesc/framework/MemBufInputSource.hpp> // This is needed for const MemBufInputSource      theInputSource(theFileName.c_str());
#include <xercesc/framework/MemBufFormatTarget.hpp>
#include <xercesc/parsers/XercesDOMParser.hpp>
//#include <xercesc/dom/deprecated/DOM_Node.hpp>
#include <xercesc/dom/DOMNodeFilter.hpp>
#include <xercesc/dom/DOMImplementation.hpp>
#include <xercesc/dom/DOMImplementationLS.hpp>
#include <xercesc/dom/DOMWriter.hpp>
#include <xercesc/framework/StdOutFormatTarget.hpp>
#include <xercesc/framework/LocalFileFormatTarget.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/dom/DOM.hpp>

XALAN_USING_STD(cerr)
XALAN_USING_STD(endl)
XALAN_USING_STD(ostream)
XALAN_USING_STD(ifstream)

XALAN_USING_XALAN(XalanDocument)
XALAN_USING_XALAN(XPathEvaluator)
XALAN_USING_XALAN(XalanDOMString)
XALAN_USING_XALAN(XalanSourceTreeInit)
XALAN_USING_XALAN(XercesDOMSupport)
XALAN_USING_XALAN(XercesParserLiaison)
XALAN_USING_XALAN(XalanVector)
XALAN_USING_XALAN(ExecutionContext)
XALAN_USING_XALAN(MemoryManagerType)



//For Xerces DOM usage
XALAN_USING_XERCES(XMLPlatformUtils)
XALAN_USING_XERCES(DOMNode)
XALAN_USING_XERCES(DOMNamedNodeMap)
XALAN_USING_XERCES(XMLString)
XALAN_USING_XERCES(DOMImplementation)
XALAN_USING_XERCES(DOMImplementationRegistry)
XALAN_USING_XERCES(DOMWriter)
XALAN_USING_XERCES(DOMImplementationLS)
XALAN_USING_XERCES(XMLUni)
//XALAN_USING_XERCES(DOMWriterFilter)
XALAN_USING_XERCES(DOMErrorHandler)
XALAN_USING_XERCES(XMLFormatTarget)
//XALAN_USING_XERCES(DOMWriterFilter)
XALAN_USING_XERCES(LocalFileInputSource) //const LocalFileInputSource      theInputSource(theFileName.c_str());
XALAN_USING_XERCES(MemBufInputSource) 
XALAN_USING_XERCES(MemBufFormatTarget)
XALAN_USING_XERCES(XMLException)
XALAN_USING_XERCES(DOMException)
XALAN_USING_XERCES(DOMNodeFilter)
  XALAN_USING_XERCES(LocalFileFormatTarget)

//For XPath
XALAN_USING_XALAN(XPathEvaluator)
XALAN_USING_XALAN(XObjectPtr)
XALAN_USING_XALAN(XalanNode)
XALAN_USING_XALAN(XalanElement)
XALAN_USING_XALAN(XalanDOMException)
XALAN_USING_XALAN(XalanXPathException)
XALAN_USING_XALAN(XPathParserException)
XALAN_USING_XALAN(NodeRefList)

//For Transformer
XALAN_USING_XALAN(XalanCompiledStylesheet)
XALAN_USING_XALAN(XalanDOMString)
XALAN_USING_XALAN(XalanTransformer)
XALAN_USING_XALAN(XSLTInputSource)
XALAN_USING_XALAN(XSLTResultTarget)
XALAN_USING_XALAN(XalanNamedNodeMap)

	XALAN_USING_XALAN(XalanStdOutputStream)
	XALAN_USING_XALAN(XalanOutputStreamPrintWriter)
	XALAN_USING_XALAN(FormatterToXML)
	XALAN_USING_XALAN(FormatterTreeWalker)
	XALAN_USING_XERCES(DOMDocument);
	XALAN_USING_XERCES(DOMElement);
	//XALAN_USING_XERCES(DOM_Node)
	XALAN_USING_XERCES(DOMText)
	XALAN_USING_XERCES(DOMDocumentType)
	XALAN_USING_XERCES(DOMDocumentFragment)
	XALAN_USING_XERCES(DOMTreeWalker)
	XALAN_USING_STD(stringstream)
	XALAN_USING_XERCES(MemBufInputSource)


int
mainX(int id, int argc, char *argv[])
{
  char filenameBuffer[1024];
  XercesDOMSupport	*theDOMSupportPtr;
  XercesParserLiaison *theLiaisonPtr;
  XalanDocument* theDocumentPtr;


  const char *text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n<note> \n \
<to>Tove</to> \n\
<from>Jani</from>\n\
<heading>Reminder</heading>\n\
<salutation>Dear</salutation>\n\
<body>Don't forget me this weekend!</body> \n\
</note>\n\
";


  std::stringstream oss;
  std::string tooutput;




  //XalanSourceTreeInit				theSourceTreeInit;
  theDOMSupportPtr=new XercesDOMSupport;
  theLiaisonPtr= new XercesParserLiaison(*theDOMSupportPtr);
  MemBufInputSource       inStream((XMLByte*)text, strlen(text), "Parser", false);
  const  XalanDOMString errorStr;
  theDocumentPtr = theLiaisonPtr->parseXMLStream(inStream,errorStr);



  XMLCh tempStr[100];
  XMLString::transcode("LS", tempStr, 99);
  DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
  DOMWriter* theSerializer = ((DOMImplementationLS*)impl)->createDOMWriter();
  cout << "impl = " << impl << endl;
  cout << "theSerializer = " << theSerializer << endl;
  // optionally you can set some features on this serializer
  if (theSerializer->canSetFeature(XMLUni::fgDOMWRTDiscardDefaultContent, true)) {
    theSerializer->setFeature(XMLUni::fgDOMWRTDiscardDefaultContent, true);
    cerr << "can set it to discarddefaultcontent" << endl;
  }
  if (theSerializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true)) {
    theSerializer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true);
    cerr << "can set it to formatprettyprint" << endl;
  }
#if 0
  if (theSerializer->canSetFeature(XMLUni::fgDOMXMLDeclaration, false)) {
    theSerializer->setFeature(XMLUni::fgDOMXMLDeclaration, false);
    cerr << "can set it to declaration to false" << endl;
  }
#endif

  XMLFormatTarget *myFormTarget;
  sprintf(filenameBuffer, "/tmp/xmy_tjk.%d.%d", getpid(), id);
  myFormTarget = new LocalFileFormatTarget(XMLString::transcode(filenameBuffer));

  DOMDocument*   Domdoc = (DOMDocument*)theLiaisonPtr->mapToXercesDocument(theDocumentPtr);
  DOMNode *doc = Domdoc->getDocumentElement();

  Domdoc->setStandalone(true);
  Domdoc->normalize();

  bool rc = false;
  rc = theSerializer->writeNode(myFormTarget, *Domdoc);
  cerr << "rc from writeNote() = " << rc << endl;
  
  //delete theSerializer;
  theSerializer->release();
  delete myFormTarget;

  ifstream is;
  is.open (filenameBuffer);
  RWCString outStr;
  outStr.readFile (is);
  is.close();
//  outStr = outStr.strip(RWCString::both,'\n');

  cout << "value = " << endl << "'" << outStr << "'" << endl;

  return 0;
}

int
main(int argc, char *argv[])
{
    XMLPlatformUtils::Initialize();
    XalanTransformer::initialize();
    XPathEvaluator::initialize();


    int rc;
    rc = mainX(1, argc, argv);
    cout << "next take..." << endl;
    rc = mainX(2, argc, argv);
    XPathEvaluator::terminate();
    XalanTransformer::terminate();
    XMLPlatformUtils::Terminate();

    return rc;

}
-----------------------------------
CC=/opt/studio11/SUNWspro/bin/CC -mt -pto -library=rwtools7_std -l++ -lCstd +w -DXMY_OPERATOR_INDEX_FIX -DUSE_NON_CONST -DXMY_TCL

XERCESCROOT=/nafs/mynah/Vendor/xerces-c++/2.8.0/Sun/SunOS5.10
XALANCROOT=/nafs/mynah/Vendor/xalan-c++/1.10.0-2.8.0/Sun/SunOS5.10

#Include paths will be added here
INCS=-I$(XERCESCROOT)/include -I$(XALANCROOT)/include

LIBS=  -L$(XERCESCROOT)/lib \
	  -lxerces-depdom \
	  -lxerces-c	\
	  -L$(XALANCROOT)/lib \
	  -lxalan-c 

#Any compiler specific flags can be added here
CFLAGS= -PIC -zmuldefs -DXTFUNCPROTO -DFUNCPROTO -D_POSIX_PTHREAD_SEMANTICS $(INCDIRS) -g


all: tc

clean:
	-rm -rf *.o *.so

.SUFFIXES: .C .o


tc.o:	tc.C
	$(CC) $(CFLAGS) -c tc.C $(INCS)

tc:	tc.o
	$(PURIFY) $(CC) $(CFLAGS) -o $@ \
	tc.o \
	$(INCS) \
	$(LIBS)

.KEEP_STATE:



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


[jira] Commented: (XERCESC-1953) extra newline after declaration in 1st use of DOMWriter

Posted by "tommy klehr (JIRA)" <xe...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XERCESC-1953?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12966119#action_12966119 ] 

tommy klehr commented on XERCESC-1953:
--------------------------------------

the static variables are not being reinitialized.  looks like this has been fixed in the 3.x version by moving these two variables to the class DOMLSSerializerImpl

*** DOMWriterImpl.cpp.orig	Tue Aug 28 14:42:12 2007
--- DOMWriterImpl.cpp	Thu Dec  2 08:09:39 2010
***************
*** 1597,1606 ****
--- 1597,1608 ----
      }
  }
  
  void DOMWriterImpl::processNode(const DOMNode* const nodeToWrite)
  {
+     lineFeedInTextNodePrinted = false;
+     lastWhiteSpaceInTextNode = 0;
      processNode(nodeToWrite, 0);
  }
  
  bool DOMWriterImpl::canSetFeature(const int featureId
                                         , bool      val) const


> extra newline after declaration in 1st use of DOMWriter
> -------------------------------------------------------
>
>                 Key: XERCESC-1953
>                 URL: https://issues.apache.org/jira/browse/XERCESC-1953
>             Project: Xerces-C++
>          Issue Type: Bug
>          Components: DOM
>    Affects Versions: 2.8.0
>         Environment: Solaris 10
>            Reporter: tommy klehr
>            Priority: Minor
>
> the sample program produces different output from DOMWriter although it's using the same input.
> The first output has an extra newline after the declaration.  The second output has the document element on the same line as the declaration.
> -------------------------------------------------
> [mynah63.dev.sol10] $ ./tc                
> impl = 4df4c
> theSerializer = 58764
> can set it to discarddefaultcontent
> can set it to formatprettyprint
> rc from writeNote() = 1
> value = 
> '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
> <note> 
>  <to>Tove</to> 
>   <from>Jani</from>
>   <heading>Reminder</heading>
>   <salutation>Dear</salutation>
>   <body>Don't forget me this weekend!</body> 
> </note>
> '
> next take...
> impl = 4df4c
> theSerializer = 5a144
> can set it to discarddefaultcontent
> can set it to formatprettyprint
> rc from writeNote() = 1
> value = 
> '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><note> 
>  <to>Tove</to> 
>   <from>Jani</from>
>   <heading>Reminder</heading>
>   <salutation>Dear</salutation>
>   <body>Don't forget me this weekend!</body> 
> </note>
> '
> $ 
> -------------------------------------------------
> #include <assert.h>
> #include <unistd.h>
> #include <iostream.h>
> #include <sstream>
> #include <fstream>
> #include <string.h>
> #include <rw/cstring.h>
> #include <xalanc/Include/PlatformDefinitions.hpp>
> #include <xalanc/Include/XalanVector.hpp>
> #include <xalanc/Include/STLHelper.hpp>
> #include <xalanc/XalanDOM/XalanDocument.hpp>
> #include <xalanc/XalanDOM/XalanElement.hpp>
> #include <xalanc/PlatformSupport/DirectoryEnumerator.hpp>
> #include <xalanc/PlatformSupport/DOMStringHelper.hpp>
> #include <xalanc/PlatformSupport/ExecutionContext.hpp>
> #include <xalanc/DOMSupport/DOMServices.hpp>
> #include <xalanc/XPath/XObjectFactoryDefault.hpp>
> #include <xalanc/XPath/XPath.hpp>
> #include <xalanc/XPath/XPathConstructionContextDefault.hpp>
> #include <xalanc/XPath/XPathEnvSupportDefault.hpp>
> #include <xalanc/XPath/XPathExecutionContextDefault.hpp>
> #include <xalanc/XPath/XPathInit.hpp>
> #include <xalanc/XPath/XPathProcessorImpl.hpp>
> #include <xalanc/XPath/XPathFactoryDefault.hpp>
> #include <xalanc/XPath/XPathEvaluator.hpp>
> #include <xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp>
> #include <xalanc/XalanSourceTree/XalanSourceTreeInit.hpp>
> #include <xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp>
> #include <xalanc/XalanTransformer/XalanTransformer.hpp>
> #include <xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp>
> #include <xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.hpp>
> #include <xalanc/XSLT/ProblemListener.hpp>
> //These includes are for converting XML document into String
> #include <xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp>
> #include <xalanc/PlatformSupport/XalanStdOutputStream.hpp>
> #include <xalanc/XMLSupport/FormatterToXML.hpp>
> #include <xalanc/XMLSupport/FormatterTreeWalker.hpp>
> #include <xalanc/XMLSupport/XMLSupportInit.hpp>
> #include <xalanc/XercesParserLiaison/XercesDOMSupport.hpp>
> #include <xalanc/XercesParserLiaison/XercesParserLiaison.hpp>
> #include <xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp>
> #include <xalanc/XalanDOM/XalanNodeList.hpp>
> #include <xalanc/XalanDOM/XalanDOMException.hpp>
> #include <xalanc/XPath/XalanXPathException.hpp>
> #include <xalanc/XPath/XPathParserException.hpp>
> //#include <xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp>
> //For Xerces DOM usage
> #include <xercesc/util/XMLString.hpp>
> #include <xercesc/util/XMLException.hpp>
> #include <xercesc/util/PlatformUtils.hpp>
> #include <xercesc/dom/DOM.hpp>
> #include <xercesc/dom/DOMNode.hpp>
> #include <xercesc/dom/DOMNamedNodeMap.hpp>
> //#include <xercesc/dom/DOMWriterFilter.hpp>
> #include <xercesc/dom/DOMException.hpp>
> #include <xercesc/dom/DOMDocument.hpp>
> #include <xercesc/framework/LocalFileInputSource.hpp> // This is needed for const LocalFileInputSource      theInputSource(theFileName.c_str());
> #include <xercesc/framework/MemBufInputSource.hpp> // This is needed for const MemBufInputSource      theInputSource(theFileName.c_str());
> #include <xercesc/framework/MemBufFormatTarget.hpp>
> #include <xercesc/parsers/XercesDOMParser.hpp>
> //#include <xercesc/dom/deprecated/DOM_Node.hpp>
> #include <xercesc/dom/DOMNodeFilter.hpp>
> #include <xercesc/dom/DOMImplementation.hpp>
> #include <xercesc/dom/DOMImplementationLS.hpp>
> #include <xercesc/dom/DOMWriter.hpp>
> #include <xercesc/framework/StdOutFormatTarget.hpp>
> #include <xercesc/framework/LocalFileFormatTarget.hpp>
> #include <xercesc/util/XMLUniDefs.hpp>
> #include <xercesc/dom/DOM.hpp>
> XALAN_USING_STD(cerr)
> XALAN_USING_STD(endl)
> XALAN_USING_STD(ostream)
> XALAN_USING_STD(ifstream)
> XALAN_USING_XALAN(XalanDocument)
> XALAN_USING_XALAN(XPathEvaluator)
> XALAN_USING_XALAN(XalanDOMString)
> XALAN_USING_XALAN(XalanSourceTreeInit)
> XALAN_USING_XALAN(XercesDOMSupport)
> XALAN_USING_XALAN(XercesParserLiaison)
> XALAN_USING_XALAN(XalanVector)
> XALAN_USING_XALAN(ExecutionContext)
> XALAN_USING_XALAN(MemoryManagerType)
> //For Xerces DOM usage
> XALAN_USING_XERCES(XMLPlatformUtils)
> XALAN_USING_XERCES(DOMNode)
> XALAN_USING_XERCES(DOMNamedNodeMap)
> XALAN_USING_XERCES(XMLString)
> XALAN_USING_XERCES(DOMImplementation)
> XALAN_USING_XERCES(DOMImplementationRegistry)
> XALAN_USING_XERCES(DOMWriter)
> XALAN_USING_XERCES(DOMImplementationLS)
> XALAN_USING_XERCES(XMLUni)
> //XALAN_USING_XERCES(DOMWriterFilter)
> XALAN_USING_XERCES(DOMErrorHandler)
> XALAN_USING_XERCES(XMLFormatTarget)
> //XALAN_USING_XERCES(DOMWriterFilter)
> XALAN_USING_XERCES(LocalFileInputSource) //const LocalFileInputSource      theInputSource(theFileName.c_str());
> XALAN_USING_XERCES(MemBufInputSource) 
> XALAN_USING_XERCES(MemBufFormatTarget)
> XALAN_USING_XERCES(XMLException)
> XALAN_USING_XERCES(DOMException)
> XALAN_USING_XERCES(DOMNodeFilter)
>   XALAN_USING_XERCES(LocalFileFormatTarget)
> //For XPath
> XALAN_USING_XALAN(XPathEvaluator)
> XALAN_USING_XALAN(XObjectPtr)
> XALAN_USING_XALAN(XalanNode)
> XALAN_USING_XALAN(XalanElement)
> XALAN_USING_XALAN(XalanDOMException)
> XALAN_USING_XALAN(XalanXPathException)
> XALAN_USING_XALAN(XPathParserException)
> XALAN_USING_XALAN(NodeRefList)
> //For Transformer
> XALAN_USING_XALAN(XalanCompiledStylesheet)
> XALAN_USING_XALAN(XalanDOMString)
> XALAN_USING_XALAN(XalanTransformer)
> XALAN_USING_XALAN(XSLTInputSource)
> XALAN_USING_XALAN(XSLTResultTarget)
> XALAN_USING_XALAN(XalanNamedNodeMap)
> 	XALAN_USING_XALAN(XalanStdOutputStream)
> 	XALAN_USING_XALAN(XalanOutputStreamPrintWriter)
> 	XALAN_USING_XALAN(FormatterToXML)
> 	XALAN_USING_XALAN(FormatterTreeWalker)
> 	XALAN_USING_XERCES(DOMDocument);
> 	XALAN_USING_XERCES(DOMElement);
> 	//XALAN_USING_XERCES(DOM_Node)
> 	XALAN_USING_XERCES(DOMText)
> 	XALAN_USING_XERCES(DOMDocumentType)
> 	XALAN_USING_XERCES(DOMDocumentFragment)
> 	XALAN_USING_XERCES(DOMTreeWalker)
> 	XALAN_USING_STD(stringstream)
> 	XALAN_USING_XERCES(MemBufInputSource)
> int
> mainX(int id, int argc, char *argv[])
> {
>   char filenameBuffer[1024];
>   XercesDOMSupport	*theDOMSupportPtr;
>   XercesParserLiaison *theLiaisonPtr;
>   XalanDocument* theDocumentPtr;
>   const char *text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n<note> \n \
> <to>Tove</to> \n\
> <from>Jani</from>\n\
> <heading>Reminder</heading>\n\
> <salutation>Dear</salutation>\n\
> <body>Don't forget me this weekend!</body> \n\
> </note>\n\
> ";
>   std::stringstream oss;
>   std::string tooutput;
>   //XalanSourceTreeInit				theSourceTreeInit;
>   theDOMSupportPtr=new XercesDOMSupport;
>   theLiaisonPtr= new XercesParserLiaison(*theDOMSupportPtr);
>   MemBufInputSource       inStream((XMLByte*)text, strlen(text), "Parser", false);
>   const  XalanDOMString errorStr;
>   theDocumentPtr = theLiaisonPtr->parseXMLStream(inStream,errorStr);
>   XMLCh tempStr[100];
>   XMLString::transcode("LS", tempStr, 99);
>   DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
>   DOMWriter* theSerializer = ((DOMImplementationLS*)impl)->createDOMWriter();
>   cout << "impl = " << impl << endl;
>   cout << "theSerializer = " << theSerializer << endl;
>   // optionally you can set some features on this serializer
>   if (theSerializer->canSetFeature(XMLUni::fgDOMWRTDiscardDefaultContent, true)) {
>     theSerializer->setFeature(XMLUni::fgDOMWRTDiscardDefaultContent, true);
>     cerr << "can set it to discarddefaultcontent" << endl;
>   }
>   if (theSerializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true)) {
>     theSerializer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true);
>     cerr << "can set it to formatprettyprint" << endl;
>   }
> #if 0
>   if (theSerializer->canSetFeature(XMLUni::fgDOMXMLDeclaration, false)) {
>     theSerializer->setFeature(XMLUni::fgDOMXMLDeclaration, false);
>     cerr << "can set it to declaration to false" << endl;
>   }
> #endif
>   XMLFormatTarget *myFormTarget;
>   sprintf(filenameBuffer, "/tmp/xmy_tjk.%d.%d", getpid(), id);
>   myFormTarget = new LocalFileFormatTarget(XMLString::transcode(filenameBuffer));
>   DOMDocument*   Domdoc = (DOMDocument*)theLiaisonPtr->mapToXercesDocument(theDocumentPtr);
>   DOMNode *doc = Domdoc->getDocumentElement();
>   Domdoc->setStandalone(true);
>   Domdoc->normalize();
>   bool rc = false;
>   rc = theSerializer->writeNode(myFormTarget, *Domdoc);
>   cerr << "rc from writeNote() = " << rc << endl;
>   
>   //delete theSerializer;
>   theSerializer->release();
>   delete myFormTarget;
>   ifstream is;
>   is.open (filenameBuffer);
>   RWCString outStr;
>   outStr.readFile (is);
>   is.close();
> //  outStr = outStr.strip(RWCString::both,'\n');
>   cout << "value = " << endl << "'" << outStr << "'" << endl;
>   return 0;
> }
> int
> main(int argc, char *argv[])
> {
>     XMLPlatformUtils::Initialize();
>     XalanTransformer::initialize();
>     XPathEvaluator::initialize();
>     int rc;
>     rc = mainX(1, argc, argv);
>     cout << "next take..." << endl;
>     rc = mainX(2, argc, argv);
>     XPathEvaluator::terminate();
>     XalanTransformer::terminate();
>     XMLPlatformUtils::Terminate();
>     return rc;
> }
> -----------------------------------
> CC=/opt/studio11/SUNWspro/bin/CC -mt -pto -library=rwtools7_std -l++ -lCstd +w -DXMY_OPERATOR_INDEX_FIX -DUSE_NON_CONST -DXMY_TCL
> XERCESCROOT=/nafs/mynah/Vendor/xerces-c++/2.8.0/Sun/SunOS5.10
> XALANCROOT=/nafs/mynah/Vendor/xalan-c++/1.10.0-2.8.0/Sun/SunOS5.10
> #Include paths will be added here
> INCS=-I$(XERCESCROOT)/include -I$(XALANCROOT)/include
> LIBS=  -L$(XERCESCROOT)/lib \
> 	  -lxerces-depdom \
> 	  -lxerces-c	\
> 	  -L$(XALANCROOT)/lib \
> 	  -lxalan-c 
> #Any compiler specific flags can be added here
> CFLAGS= -PIC -zmuldefs -DXTFUNCPROTO -DFUNCPROTO -D_POSIX_PTHREAD_SEMANTICS $(INCDIRS) -g
> all: tc
> clean:
> 	-rm -rf *.o *.so
> .SUFFIXES: .C .o
> tc.o:	tc.C
> 	$(CC) $(CFLAGS) -c tc.C $(INCS)
> tc:	tc.o
> 	$(PURIFY) $(CC) $(CFLAGS) -o $@ \
> 	tc.o \
> 	$(INCS) \
> 	$(LIBS)
> .KEEP_STATE:

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


[jira] [Closed] (XERCESC-1953) extra newline after declaration in 1st use of DOMWriter

Posted by "Alberto Massari (JIRA)" <xe...@xml.apache.org>.
     [ https://issues.apache.org/jira/browse/XERCESC-1953?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alberto Massari closed XERCESC-1953.
------------------------------------

    Resolution: Won't Fix

The 2.x branch will not be updated anymore
                
> extra newline after declaration in 1st use of DOMWriter
> -------------------------------------------------------
>
>                 Key: XERCESC-1953
>                 URL: https://issues.apache.org/jira/browse/XERCESC-1953
>             Project: Xerces-C++
>          Issue Type: Bug
>          Components: DOM
>    Affects Versions: 2.8.0
>         Environment: Solaris 10
>            Reporter: tommy klehr
>            Priority: Minor
>
> the sample program produces different output from DOMWriter although it's using the same input.
> The first output has an extra newline after the declaration.  The second output has the document element on the same line as the declaration.
> -------------------------------------------------
> [mynah63.dev.sol10] $ ./tc                
> impl = 4df4c
> theSerializer = 58764
> can set it to discarddefaultcontent
> can set it to formatprettyprint
> rc from writeNote() = 1
> value = 
> '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
> <note> 
>  <to>Tove</to> 
>   <from>Jani</from>
>   <heading>Reminder</heading>
>   <salutation>Dear</salutation>
>   <body>Don't forget me this weekend!</body> 
> </note>
> '
> next take...
> impl = 4df4c
> theSerializer = 5a144
> can set it to discarddefaultcontent
> can set it to formatprettyprint
> rc from writeNote() = 1
> value = 
> '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><note> 
>  <to>Tove</to> 
>   <from>Jani</from>
>   <heading>Reminder</heading>
>   <salutation>Dear</salutation>
>   <body>Don't forget me this weekend!</body> 
> </note>
> '
> $ 
> -------------------------------------------------
> #include <assert.h>
> #include <unistd.h>
> #include <iostream.h>
> #include <sstream>
> #include <fstream>
> #include <string.h>
> #include <rw/cstring.h>
> #include <xalanc/Include/PlatformDefinitions.hpp>
> #include <xalanc/Include/XalanVector.hpp>
> #include <xalanc/Include/STLHelper.hpp>
> #include <xalanc/XalanDOM/XalanDocument.hpp>
> #include <xalanc/XalanDOM/XalanElement.hpp>
> #include <xalanc/PlatformSupport/DirectoryEnumerator.hpp>
> #include <xalanc/PlatformSupport/DOMStringHelper.hpp>
> #include <xalanc/PlatformSupport/ExecutionContext.hpp>
> #include <xalanc/DOMSupport/DOMServices.hpp>
> #include <xalanc/XPath/XObjectFactoryDefault.hpp>
> #include <xalanc/XPath/XPath.hpp>
> #include <xalanc/XPath/XPathConstructionContextDefault.hpp>
> #include <xalanc/XPath/XPathEnvSupportDefault.hpp>
> #include <xalanc/XPath/XPathExecutionContextDefault.hpp>
> #include <xalanc/XPath/XPathInit.hpp>
> #include <xalanc/XPath/XPathProcessorImpl.hpp>
> #include <xalanc/XPath/XPathFactoryDefault.hpp>
> #include <xalanc/XPath/XPathEvaluator.hpp>
> #include <xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp>
> #include <xalanc/XalanSourceTree/XalanSourceTreeInit.hpp>
> #include <xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp>
> #include <xalanc/XalanTransformer/XalanTransformer.hpp>
> #include <xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp>
> #include <xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.hpp>
> #include <xalanc/XSLT/ProblemListener.hpp>
> //These includes are for converting XML document into String
> #include <xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp>
> #include <xalanc/PlatformSupport/XalanStdOutputStream.hpp>
> #include <xalanc/XMLSupport/FormatterToXML.hpp>
> #include <xalanc/XMLSupport/FormatterTreeWalker.hpp>
> #include <xalanc/XMLSupport/XMLSupportInit.hpp>
> #include <xalanc/XercesParserLiaison/XercesDOMSupport.hpp>
> #include <xalanc/XercesParserLiaison/XercesParserLiaison.hpp>
> #include <xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp>
> #include <xalanc/XalanDOM/XalanNodeList.hpp>
> #include <xalanc/XalanDOM/XalanDOMException.hpp>
> #include <xalanc/XPath/XalanXPathException.hpp>
> #include <xalanc/XPath/XPathParserException.hpp>
> //#include <xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp>
> //For Xerces DOM usage
> #include <xercesc/util/XMLString.hpp>
> #include <xercesc/util/XMLException.hpp>
> #include <xercesc/util/PlatformUtils.hpp>
> #include <xercesc/dom/DOM.hpp>
> #include <xercesc/dom/DOMNode.hpp>
> #include <xercesc/dom/DOMNamedNodeMap.hpp>
> //#include <xercesc/dom/DOMWriterFilter.hpp>
> #include <xercesc/dom/DOMException.hpp>
> #include <xercesc/dom/DOMDocument.hpp>
> #include <xercesc/framework/LocalFileInputSource.hpp> // This is needed for const LocalFileInputSource      theInputSource(theFileName.c_str());
> #include <xercesc/framework/MemBufInputSource.hpp> // This is needed for const MemBufInputSource      theInputSource(theFileName.c_str());
> #include <xercesc/framework/MemBufFormatTarget.hpp>
> #include <xercesc/parsers/XercesDOMParser.hpp>
> //#include <xercesc/dom/deprecated/DOM_Node.hpp>
> #include <xercesc/dom/DOMNodeFilter.hpp>
> #include <xercesc/dom/DOMImplementation.hpp>
> #include <xercesc/dom/DOMImplementationLS.hpp>
> #include <xercesc/dom/DOMWriter.hpp>
> #include <xercesc/framework/StdOutFormatTarget.hpp>
> #include <xercesc/framework/LocalFileFormatTarget.hpp>
> #include <xercesc/util/XMLUniDefs.hpp>
> #include <xercesc/dom/DOM.hpp>
> XALAN_USING_STD(cerr)
> XALAN_USING_STD(endl)
> XALAN_USING_STD(ostream)
> XALAN_USING_STD(ifstream)
> XALAN_USING_XALAN(XalanDocument)
> XALAN_USING_XALAN(XPathEvaluator)
> XALAN_USING_XALAN(XalanDOMString)
> XALAN_USING_XALAN(XalanSourceTreeInit)
> XALAN_USING_XALAN(XercesDOMSupport)
> XALAN_USING_XALAN(XercesParserLiaison)
> XALAN_USING_XALAN(XalanVector)
> XALAN_USING_XALAN(ExecutionContext)
> XALAN_USING_XALAN(MemoryManagerType)
> //For Xerces DOM usage
> XALAN_USING_XERCES(XMLPlatformUtils)
> XALAN_USING_XERCES(DOMNode)
> XALAN_USING_XERCES(DOMNamedNodeMap)
> XALAN_USING_XERCES(XMLString)
> XALAN_USING_XERCES(DOMImplementation)
> XALAN_USING_XERCES(DOMImplementationRegistry)
> XALAN_USING_XERCES(DOMWriter)
> XALAN_USING_XERCES(DOMImplementationLS)
> XALAN_USING_XERCES(XMLUni)
> //XALAN_USING_XERCES(DOMWriterFilter)
> XALAN_USING_XERCES(DOMErrorHandler)
> XALAN_USING_XERCES(XMLFormatTarget)
> //XALAN_USING_XERCES(DOMWriterFilter)
> XALAN_USING_XERCES(LocalFileInputSource) //const LocalFileInputSource      theInputSource(theFileName.c_str());
> XALAN_USING_XERCES(MemBufInputSource) 
> XALAN_USING_XERCES(MemBufFormatTarget)
> XALAN_USING_XERCES(XMLException)
> XALAN_USING_XERCES(DOMException)
> XALAN_USING_XERCES(DOMNodeFilter)
>   XALAN_USING_XERCES(LocalFileFormatTarget)
> //For XPath
> XALAN_USING_XALAN(XPathEvaluator)
> XALAN_USING_XALAN(XObjectPtr)
> XALAN_USING_XALAN(XalanNode)
> XALAN_USING_XALAN(XalanElement)
> XALAN_USING_XALAN(XalanDOMException)
> XALAN_USING_XALAN(XalanXPathException)
> XALAN_USING_XALAN(XPathParserException)
> XALAN_USING_XALAN(NodeRefList)
> //For Transformer
> XALAN_USING_XALAN(XalanCompiledStylesheet)
> XALAN_USING_XALAN(XalanDOMString)
> XALAN_USING_XALAN(XalanTransformer)
> XALAN_USING_XALAN(XSLTInputSource)
> XALAN_USING_XALAN(XSLTResultTarget)
> XALAN_USING_XALAN(XalanNamedNodeMap)
> 	XALAN_USING_XALAN(XalanStdOutputStream)
> 	XALAN_USING_XALAN(XalanOutputStreamPrintWriter)
> 	XALAN_USING_XALAN(FormatterToXML)
> 	XALAN_USING_XALAN(FormatterTreeWalker)
> 	XALAN_USING_XERCES(DOMDocument);
> 	XALAN_USING_XERCES(DOMElement);
> 	//XALAN_USING_XERCES(DOM_Node)
> 	XALAN_USING_XERCES(DOMText)
> 	XALAN_USING_XERCES(DOMDocumentType)
> 	XALAN_USING_XERCES(DOMDocumentFragment)
> 	XALAN_USING_XERCES(DOMTreeWalker)
> 	XALAN_USING_STD(stringstream)
> 	XALAN_USING_XERCES(MemBufInputSource)
> int
> mainX(int id, int argc, char *argv[])
> {
>   char filenameBuffer[1024];
>   XercesDOMSupport	*theDOMSupportPtr;
>   XercesParserLiaison *theLiaisonPtr;
>   XalanDocument* theDocumentPtr;
>   const char *text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n<note> \n \
> <to>Tove</to> \n\
> <from>Jani</from>\n\
> <heading>Reminder</heading>\n\
> <salutation>Dear</salutation>\n\
> <body>Don't forget me this weekend!</body> \n\
> </note>\n\
> ";
>   std::stringstream oss;
>   std::string tooutput;
>   //XalanSourceTreeInit				theSourceTreeInit;
>   theDOMSupportPtr=new XercesDOMSupport;
>   theLiaisonPtr= new XercesParserLiaison(*theDOMSupportPtr);
>   MemBufInputSource       inStream((XMLByte*)text, strlen(text), "Parser", false);
>   const  XalanDOMString errorStr;
>   theDocumentPtr = theLiaisonPtr->parseXMLStream(inStream,errorStr);
>   XMLCh tempStr[100];
>   XMLString::transcode("LS", tempStr, 99);
>   DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
>   DOMWriter* theSerializer = ((DOMImplementationLS*)impl)->createDOMWriter();
>   cout << "impl = " << impl << endl;
>   cout << "theSerializer = " << theSerializer << endl;
>   // optionally you can set some features on this serializer
>   if (theSerializer->canSetFeature(XMLUni::fgDOMWRTDiscardDefaultContent, true)) {
>     theSerializer->setFeature(XMLUni::fgDOMWRTDiscardDefaultContent, true);
>     cerr << "can set it to discarddefaultcontent" << endl;
>   }
>   if (theSerializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true)) {
>     theSerializer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true);
>     cerr << "can set it to formatprettyprint" << endl;
>   }
> #if 0
>   if (theSerializer->canSetFeature(XMLUni::fgDOMXMLDeclaration, false)) {
>     theSerializer->setFeature(XMLUni::fgDOMXMLDeclaration, false);
>     cerr << "can set it to declaration to false" << endl;
>   }
> #endif
>   XMLFormatTarget *myFormTarget;
>   sprintf(filenameBuffer, "/tmp/xmy_tjk.%d.%d", getpid(), id);
>   myFormTarget = new LocalFileFormatTarget(XMLString::transcode(filenameBuffer));
>   DOMDocument*   Domdoc = (DOMDocument*)theLiaisonPtr->mapToXercesDocument(theDocumentPtr);
>   DOMNode *doc = Domdoc->getDocumentElement();
>   Domdoc->setStandalone(true);
>   Domdoc->normalize();
>   bool rc = false;
>   rc = theSerializer->writeNode(myFormTarget, *Domdoc);
>   cerr << "rc from writeNote() = " << rc << endl;
>   
>   //delete theSerializer;
>   theSerializer->release();
>   delete myFormTarget;
>   ifstream is;
>   is.open (filenameBuffer);
>   RWCString outStr;
>   outStr.readFile (is);
>   is.close();
> //  outStr = outStr.strip(RWCString::both,'\n');
>   cout << "value = " << endl << "'" << outStr << "'" << endl;
>   return 0;
> }
> int
> main(int argc, char *argv[])
> {
>     XMLPlatformUtils::Initialize();
>     XalanTransformer::initialize();
>     XPathEvaluator::initialize();
>     int rc;
>     rc = mainX(1, argc, argv);
>     cout << "next take..." << endl;
>     rc = mainX(2, argc, argv);
>     XPathEvaluator::terminate();
>     XalanTransformer::terminate();
>     XMLPlatformUtils::Terminate();
>     return rc;
> }
> -----------------------------------
> CC=/opt/studio11/SUNWspro/bin/CC -mt -pto -library=rwtools7_std -l++ -lCstd +w -DXMY_OPERATOR_INDEX_FIX -DUSE_NON_CONST -DXMY_TCL
> XERCESCROOT=/nafs/mynah/Vendor/xerces-c++/2.8.0/Sun/SunOS5.10
> XALANCROOT=/nafs/mynah/Vendor/xalan-c++/1.10.0-2.8.0/Sun/SunOS5.10
> #Include paths will be added here
> INCS=-I$(XERCESCROOT)/include -I$(XALANCROOT)/include
> LIBS=  -L$(XERCESCROOT)/lib \
> 	  -lxerces-depdom \
> 	  -lxerces-c	\
> 	  -L$(XALANCROOT)/lib \
> 	  -lxalan-c 
> #Any compiler specific flags can be added here
> CFLAGS= -PIC -zmuldefs -DXTFUNCPROTO -DFUNCPROTO -D_POSIX_PTHREAD_SEMANTICS $(INCDIRS) -g
> all: tc
> clean:
> 	-rm -rf *.o *.so
> .SUFFIXES: .C .o
> tc.o:	tc.C
> 	$(CC) $(CFLAGS) -c tc.C $(INCS)
> tc:	tc.o
> 	$(PURIFY) $(CC) $(CFLAGS) -o $@ \
> 	tc.o \
> 	$(INCS) \
> 	$(LIBS)
> .KEEP_STATE:

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org