I don't mind taking that, but there is descrepency in how XercesC and XercesJ
behaves. XercesC writes tab character as literal tab whereas XercesJ writes
it to Hex char reference code.

Writing a literal tab is bad idea as parser will convert it to space when it
reads xml file. Hex code is read back as tab character by parser.

- Ritesh



John Lilley wrote:
> 
> Perhaps this is good to read.  I am not expert enough to say, but it seems
> to me that tabs in attribute values may not be preserved:
> http://www.w3.org/TR/REC-xml/#AVNormalize
> 
> john
> 
> -----Original Message-----
> From: ritesh.dhope [mailto:[email protected]]
> Sent: Wednesday, April 07, 2010 8:00 AM
> To: [email protected]
> Subject: RE: Xerces CPP does not replace tab character in attribute value
> with hexadecimal char reference
> 
> 
> I tried writing \t as well as &#x09. \t gets written as literal tab
> whereas
> 	 gets written as 	 replacing the & value.
> 
> What I need finally is 	 written out to xml file. Alternatively, Is
> there any way to escape & in the value of 	 getting replaced to &
> 
> - Ritesh
> --------------------------------------------------------------
> 
> John Lilley wrote:
>>
>> I think that was the first line in the example:
>>>      pRow->setAttribute(L"description", L"\tThe value of PI");
>>
>> -----Original Message-----
>> From: Alberto Massari [mailto:[email protected]]
>> Sent: Wednesday, April 07, 2010 1:10 AM
>> To: [email protected]
>> Subject: Re: Xerces CPP does not replace tab character in attribute value
>> with hexadecimal char reference
>>
>> If you invoke
>>
>> pRow1->setAttribute(L"description", L"	The vale of PI");
>>
>> what you are writing is the literal "	", not a tab character. Have
>> you tried writing the same content as in the Java version,
>>
>> pRow1->setAttribute(L"description", L"test tab \t,     and \x09 as	
>> value" );
>>
>> Alberto
>>
>>
>> On 4/6/2010 11:20 PM, ritesh.dhope wrote:
>>> I have a sample xerces writer code to create an attribute with tab
>>> character
>>> in value. When I write the xml file out, the tab character is preserved
>>> and
>>> written as literal tab. I want to convert this tab character to its
>>> hexadecimal char reference (	) so that this tab character can be
>>> parsed
>>> back. I tried the same code using Xerces-J and it is replacing the tab
>>> character with hexadecimal char reference.
>>>
>>> Here is the code snippets.
>>> -------------------
>>> C++
>>> -------------------
>>>      XMLPlatformUtils::Initialize();
>>>
>>>      DOMImplementation * pDOMImplementation = NULL;
>>>
>>>      pDOMImplementation =
>>> DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("core"));
>>>
>>>      DOMDocument * pDOMDocument = NULL;
>>>
>>>
>>>      pDOMDocument = pDOMImplementation->createDocument(0,
>>> L"Hello_World", 0);
>>>
>>>
>>>
>>>      DOMElement * pRootElement = NULL;
>>>      pRootElement = pDOMDocument->getDocumentElement();
>>>
>>>
>>>
>>>      DOMElement * pRow = NULL;
>>>
>>>
>>>      pRow = pDOMDocument->createElement(L"row");
>>>      pRow->setAttribute(L"description", L"\tThe value of PI");
>>>      pRootElement->appendChild(pRow);
>>>
>>>      DOMElement * pRow1 = NULL;
>>>      pRow1 = pDOMDocument->createElement(L"row");
>>>      pRow1->setAttribute(L"description", L"	The vale of PI");
>>>      pRootElement->appendChild(pRow1);
>>>
>>>      DOMElement * pRow2 = NULL;
>>>
>>>
>>>      pRow2 = pDOMDocument->createElement(L"row");
>>>      pRow2->setAttribute(L"description", L"\nThe value of PI");
>>>      pRootElement->appendChild(pRow2);
>>>
>>>      DOMWriter *pwriter = pDOMImplementation->createDOMWriter();
>>>      XMLFormatTarget *pTarget = new
>>> LocalFileFormatTarget("f:\\june1\\june.xml");
>>>
>>>
>>>      pwriter->writeNode(pTarget, *pDOMDocument);
>>> -------------------------------------------------------------------------
>>>
>>> ------------------
>>> Java
>>> ------------------
>>>              Document zTest =
>>> DocumentBuilderFactoryImpl.newInstance().newDocumentBuilder().newDocument();
>>>              Element base = zTest.createElement( "Base" );
>>>              base.setAttribute( "test", "test tab \t,         and \u0009
>>> as	
>>> value" );
>>>              zTest.appendChild( base );
>>>
>>>              Serializer z = new XMLSerializer();
>>>
>>>              z.setOutputByteStream( System.out );
>>>              z.asDOMSerializer().serialize( zTest );
>>> ----------------------------------------------------------------------
>>>
>>
>>
>>
> 
> --
> View this message in context:
> http://old.nabble.com/Xerces-CPP-does-not-replace-tab-character-in-attribute-value-with-hexadecimal-char-reference-tp28157670p28165406.html
> Sent from the Xerces - C - Users mailing list archive at Nabble.com.
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Xerces-CPP-does-not-replace-tab-character-in-attribute-value-with-hexadecimal-char-reference-tp28157670p28166497.html
Sent from the Xerces - C - Users mailing list archive at Nabble.com.

Reply via email to