asp.net mvc display pdf : Converting pdf to searchable text format application software cloud windows html wpf class merging-xml-files1-part1004

Page: 11
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
Controlling the Merge with Keys
In the above examples, the merges were performed as expected. This  is because the initial comparison
process was able to match up, correctly, the corresponding elements in the two files. In cases where many
changes  have  been  made  to  the files, it  is  not  always  possible to  achieve,  in  all  cases,  the  ‘correct’
correspondence between the two files. Applying more sophisticated algorithms and more processing power
can help this situation, but in some cases it is very difficult to automate. A better approach is to add some
control information into  the  files, in the  form of keys,  to  aid this process. With keys it is possible  to
guarantee that corresponding elements are matched up, and then the result of the merge will be as expected.
The example below shows how keys can be added to assist the process. Consider merging the file B.xml
with this new file J.xml:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled</title>
<meta name="generator" content="BBEdit 6.1.2" />
</head>
<body><p class="important">This is the first paragraph</p
><p class="important">This is the paragraph added after the first paragraph</p
><p class="important">This is the second paragraph</p
><p class="important">This is the third paragraph</p
></body>
</html>
J.xml, to be merged with B.xml
The result of the merge with B.xml is not what is expected because the comparison program is not able to
match up the <p> elements correctly because they have all been changed by the addition of an attribute.
<p0:html xmlns:p0="http://www.w3.org/1999/xhtml"
xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1">
<p0:head>
<p0:title>
Untitled
</p0:title>
<p0:meta name="generator" content="BBEdit 6.1.2" />
</p0:head>
<p0:body>
<p0:p class="important">
This is the first paragraph
</p0:p>
<p0:p class="important">
|#[This is the second paragraph]#[This is the paragraph
added after the first paragraph]#|
</p0:p>
<p0:p class="important">
|#[This is the third paragraph]#[This is the second
paragraph]#|
</p0:p>
<p0:p class="important">
|#[This is a paragraph added after the third
paragraph]#[This is the third paragraph]#|
</p0:p>
<p0:p>
This is another paragraph added after the third paragraph
</p0:p>
</p0:body>
</p0:html>
J.xml, incorrectly merged with B.xml
What has happened here is that the <p> elements are all different between the two files so they have been
matched by position, and the result of the merge is not what was required. (The new and old text data items
are delimited by |#[, ]#[ and ]#|, to show this, though these could be changed easily by modifying the merge
XML stylesheet.)
Converting pdf to searchable text format - application software cloud:C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net, ASP.NET MVC, WinForms, WPF application
C# PDF to Text (TXT) Converting Library to Convert PDF to Text
www.rasteredge.com
Converting pdf to searchable text format - application software cloud:VB.NET PDF Convert to Text SDK: Convert PDF to txt files in vb.net, ASP.NET MVC, WinForms, WPF application
VB.NET Guide and Sample Codes to Convert PDF to Text in .NET Project
www.rasteredge.com
Page: 12
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
To improve this, keys can be added using the deltaxml:key attribute. Consider the example above but with
the addition of some deltaxml:key attributes that identify the paragraphs. The deltaxml:key attribute must
be unique within the parent element. It could be an attribute of type ID, but this is not necessary. In formal
documents, paragraphs are often numbered and whatever attribute holds this number could be used as a
basis for generating the deltaxml:key attribute. This can be automated using XSL as an input filter, so the
user does not need to change their way of working – an important consideration.
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html SYSTEM "xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1">
<head>
<title>Untitled</title>
<meta name="generator" content="BBEdit 6.1.2" />
</head>
<body><p deltaxml:key="1">This is the first paragraph</p
><p deltaxml:key="2">This is the second paragraph</p
><p deltaxml:key="3">This is the third paragraph</p
><p deltaxml:key="3a">This is a paragraph added after the third paragraph</p
><p deltaxml:key="3b">This is another paragraph added after the third paragraph</p
></body>
</html>
File K.xml, formed from file B.xml with deltaxml:key attributes
Now we can also add deltaxml:key attributes to file J.xml as follows.
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html SYSTEM "xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1">
<head>
<title>Untitled</title>
<meta name="generator" content="BBEdit 6.1.2" />
</head>
<body><p class="important" deltaxml:key="1">This is the first paragraph</p
><p class="important" deltaxml:key="1a">This is the paragraph added after the
first paragraph</p
><p class="important" deltaxml:key="2">This is the second paragraph</p
><p class="important" deltaxml:key="3">This is the third paragraph</p
></body>
</html>
File L.xml, formed from file J.xml with deltaxml:key attributes
Now when the files are compared the elements will be matched using their deltaxml:key attributes, and a
correct merged file will be generated as shown below.
application software cloud:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
original formatting and interrelation of text and graphical makes PDF document visible and searchable on the a C# programming example for converting PDF to HTML
www.rasteredge.com
application software cloud:VB.NET Image: Robust OCR Recognition SDK for VB.NET, .NET Image
viewed and edited by converting documents and on artificial intelligence to extract text from documents and Texts will be outputted as searchable PDF, PDF/A,TXT
www.rasteredge.com
Page: 13
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
<p0:html xmlns:p0="http://www.w3.org/1999/xhtml"
xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1">
<p0:head>
<p0:title>
Untitled
</p0:title>
<p0:meta name="generator" content="BBEdit 6.1.2" />
</p0:head>
<p0:body>
<p0:p class="important">
This is the first paragraph
</p0:p>
<p0:p class="important">
This is the paragraph added after the first paragraph
</p0:p>
<p0:p class="important">
This is the second paragraph
</p0:p>
<p0:p class="important">
This is the third paragraph
</p0:p>
<p0:p>
This is a paragraph added after the third paragraph
</p0:p>
<p0:p>
This is another paragraph added after the third paragraph
</p0:p>
</p0:body>
</p0:html>
Final result of controlled merge between K1.xml and L1.xml
In  this  case,  the  result is  what was  required in that  the  <p>  elements are in the correct order and  the
attributes have been added as expected.
The extra effort in writing an XSL input filter to add the deltaxml:key attributes can mean that the results
of the merge require no further processing, as has been shown above.
Using a Base File for 3-way Merge
Although there are use cases for a 2-way merge, the 3-way merge is more powerful in cases where a base
file does exist. In particular, the limitations of the 2-way merge in these cases include (for a base file TB
and two derived files T1 and T2):
•  it is not possible to distinguish between an element added from TB to T1 and one that has been
deleted in TB to T2: in both cases they will be in T1 but not in T2 (also vice versa).
•  where there is conflict between the two files, e.g. for some PCDATA, it is not possible to know
which  one  should  be selected, i.e.  it is  not  possible to  know whether  T1 or  T2  contains  the
‘updated’ text.
•  Similar problems apply to attributes.
In [Lindholm2001] the author suggests that this information can be found if the base file is processed and
first matched with the two derived files. Markers are then added to distinguish these cases. This can be
achieved using DeltaXML because the delta file that results from comparing TB with T1 can be used to
generate a new version of T1 which has additional XML attributes to denote:
•  any element that has been deleted
•  any attribute that has been modified or deleted
•  any element where the text content (directly contained within it) has been changed
Given an annotated version  of T1,  denoted T1a, and  an annotated version of T2, it is then possible to
compare  these  and  generate,  as  before,  a full  delta  between  T1a  and  T2a.  This  will  have  sufficient
information to enable a merged file to be generated such that the additional requirements of the 3-way
merge are met.
application software cloud:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
VB.NET PDF Converter SDK for Converting PDF to HTML Webpage is that compared with HTML file, PDF file (a not be easily edited), is less searchable for search
www.rasteredge.com
application software cloud:VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
documents from both scanned PDF and searchable PDF files without that compared to PDF document format, Word file This is an example for converting PDF to Word
www.rasteredge.com
Page: 14
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
Overview of 3-way merge based on two comparison stages
Let us consider first an example showing a deletion, taken from [Lindholm2001], example D1. The base
file is as follows:
<R>
<s1>
<p1 />
<p2 />
</s1>
<s2>
<p3 />
<p4 />
</s2>
</R>
Base file d1-b.xml
<R>
<s1>
<p1 />
<p2 />
</s1>
</R>
Modified file d1-t1.xml
Note that <s2> has been deleted.
<R>
<s1>
<p1 />
</s1>
<s2>
<p3 />
<p4 />
</s2>
</R>
Modified file d1-t2.xml
Note that <p2> within <s1> has been deleted.
XML 
T1
XML 
T2
Merged
File 1-2
XML 
Base file
B
DeltaXML
compare
Full
Delta 
T1-B
Full
Delta 
T2-B
DeltaXML
compare
DeltaXML
compare
Full
Delta 
application software cloud:C# Create PDF from Text to convert txt files to PDF in C#.net, ASP
NET control for batch converting text formats to editable & searchable PDF document. Sample code for text to PDF converting in C# programming .
www.rasteredge.com
application software cloud:VB.NET Word: .NET Word to SVG Converter Control; Convert Word to
an editable image format) can be more searchable for Google The converting process is not complicated: open a Word For instance, this VB.NET PDF to SVG library
www.rasteredge.com
Page: 15
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
From these three files we can generate the deltas by comparing d1-t1.xml with the base file d1-b.xml and
similarly d1-t2.xml and d1-b.xml. From these we can generate an annotated version of d1-t1.xml and d1-
t2.xml as shown below, again using an XSL script to do this. These annotated files are then compared
again, and from the resulting full delta a merged file can be generated. We will work though this example
in full to see how this works.
Refinement to 3-way merge adding annotated files before final comparison
The first step is to compare the modified files with the base file, obtaining a full delta in each case.
<R xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1"
deltaxml:delta="WFmodify">
<s1 deltaxml:delta="unchanged">
<p1 />
<p2 />
</s1>
<s2 deltaxml:delta="delete">
<p3 />
<p4 />
</s2>
</R>
Full delta file comparing d1-b.xml with d1-t1.xml
Note that <s2> has been marked as deleted.
<R xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1"
deltaxml:delta="WFmodify">
<s1 deltaxml:delta="WFmodify">
<p1 deltaxml:delta="unchanged" />
<p2 deltaxml:delta="delete" />
</s1>
<s2 deltaxml:delta="unchanged">
<p3 />
<p4 />
</s2>
</R>
Full delta file comparing d1-b.xml with d1-t2.xml
Note that <p2> within <s1> has been marked as deleted, and <s2>is unchanged.
Next, we process these files with XSL to generate an annotated version with the information we need about
elements which have been deleted.
Merged
File 1-2
These are annotated
files: elements deleted
are annotated with
attributes
Full
Delta 
T1-B
Full
Delta 
T2-B
DeltaXML
compare
Full
Delta 
Ann 
T1-B
Ann 
T2-B
XSL
XSL
XSL
application software cloud:C# Create PDF from Tiff Library to convert tif images to PDF in C#
Selection of turning tiff into searchable PDF or scanned PDF. Online demo allows converting tiff to PDF online. RasterEdge.XDoc.PDF.dll. RasterEdge.XDoc.TIFF.dll
www.rasteredge.com
application software cloud:C# powerpoint - Convert PowerPoint to HTML in C#.NET
original formatting and interrelation of text and graphical PowerPoint document visible and searchable on the Internet by converting PowerPoint document
www.rasteredge.com
Page: 16
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
<R xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1">
<s1>
<p1 />
<p2 />
</s1>
<s2 xmlns:dxann="http://www.deltaxml.com/ns/annotated-for-3-way-merge"
dxann:deleted="true">
<p3 />
<p4 />
</s2>
</R>
Annotation file showing deletions from d1-b.xml to d1-t1.xml
Note that <s2> has been marked as deleted using a new namespace so that this does not get confused with
the deltaxml namespace.
<R xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1">
<s1>
<p1 />
<p2 xmlns:dxann="http://www.deltaxml.com/ns/annotated-for-3-way-
merge" dxann:deleted="true" />
</s1>
<s2>
<p3 />
<p4 />
</s2>
</R>
Annotation file showing deletions from d1-b.xml to d1-t2.xml
Note that <p2> within <s1> has been marked as deleted, and <s2> is not marked because it is unchanged.
Now we compare these two annotated files to generate a full delta. As the annotation attributes are in a
different namespace from the deltaxml attributes, there will be no confusion and the annotation will be
compared in the usual way.
<R xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1"
xmlns:dxann="http://www.deltaxml.com/ns/annotated-for-3-way-merge"
deltaxml:delta="WFmodify">
<s1 deltaxml:delta="WFmodify">
<p1 deltaxml:delta="unchanged" />
<p2 deltaxml:delta="WFmodify" deltaxml:new-
attributes="dxann:deleted=&quot;true&quot;" />
</s1>
<s2 deltaxml:delta="WFmodify" deltaxml:old-
attributes="dxann:deleted=&quot;true&quot;">
<p3 deltaxml:delta="unchanged" />
<p4 deltaxml:delta="unchanged" />
</s2>
</R>
Full delta file comparing the two annotated files
Finally, we run an XSL script on this to generate a merged file, which takes into account the two deletions.
<R>
<s1>
<p1 />
</s1>
</R>
Final result: 3-way merged file
This result is as expected, and is in agreement with [Lindholm2001].
Other deletion examples from [Lindholm2001] were run and the results were in agreement except for D4.
The difference appears to be due to the different comparison algorithms and whether a move operation is
allowed. The files are shown below.
application software cloud:C# Word - Convert Word to HTML in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET Besides, this Word converting library also makes Word document visible and searchable on the
www.rasteredge.com
Page: 17
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
<R>
<a>
<b>
<c />
</b>
</a>
</R>
Base file d4-b.xml
<R>
<a>
<i>
<b>
<c />
</b>
</i>
</a>
</R>
Modified file d4-t1.xml
Note that a/b has been deleted and a/i has been added.
<R>
<a>
<c />
</a>
</R>
Modified file d1-t2.xml
Note that a/b has been deleted and a/c has been added.
<R>
<a>
<i>
<c />
</i>
</a>
</R>
Merged file for d4: Lindholm results
<R>
<a>
<c />
<i>
<b>
<c />
</b>
</i>
</a>
</R>
Merged file for d4: DeltaXML results
The DeltaXML result performs the edits as delete/add operations whereas the Lindholm results incorporate
a move. This is interesting in that it shows the influence on the result of the different comparison methods.
Text (PCDATA) content modifications
The next example looks at modifications to text or values within the file to show that these are propagated
through to the merged file in a 3-way merge.
Page: 18
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
<test1>
<p>To show 3-way merge for list of tagged text items</p>
<data>
<list>
<i>100</i>
<i>200</i>
<i>300</i>
<i>400</i>
<i>500</i>
<i>600</i>
<i>700 (is deleted in t2)</i>
<i>800</i>
<i>900 (is deleted in t1)</i>
</list>
</data>
</test1>
Base file rl1-b.xml
<test1>
<p>To show 3-way merge for list of tagged text items</p>
<data>
<list>
<i>101 (modified in t1)</i>
<i>200</i>
<i>300</i>
<i>400</i>
<i>500</i>
<i>550 (added in t1)</i>
<i>600</i>
<i>700 (is deleted in t2)</i>
<i>800</i>
</list>
</data>
</test1>
Modified file rl1-t1.xml
Note that <i>900<i> has been deleted, 550 has been added and 100 has been changed to 101.
<test1>
<p>To show 3-way merge for list of tagged text items</p>
<data>
<list>
<i>100</i>
<i>200</i>
<i>275 (added in t2)</i>
<i>300</i>
<i>402 (modified in t2)</i>
<i>500</i>
<i>600</i>
<i>800</i>
<i>900 (is deleted in t1)</i>
</list>
</data>
</test1>
Modified file rl1-t2.xml
Note that <i>700<i> has been deleted, 275 has been added and 400 has been changed to 402.
When these are processed, the resultant merged file is as follows:
Page: 19
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
<test1>
<p>To show 3-way merge for list of tagged text items </p>
<data>
<list>
<i>101 (modified in t1)</i>
<i>200 </i>
<i>275 (added in t2)</i>
<i>300 </i>
<i>402 (modified in t2)</i>
<i>500 </i>
<i>550 (added in t1)</i>
<i>600 </i>
<i>800 </i>
</list>
</data>
</test1>
Final result: 3-way merged file for rl1 example
Note  here that because  there  is  always  an  unedited item  between  the changed  items,  the  comparison
algorithm is able to find the correct correspondence. With adjacent edits this may be more difficult and
some changes may be misinterpreted. However, this is can be solved by adding keys to the elements so that
correct correspondence is guaranteed.
Handling Attributes in a 3-way merge
Attributes are handled in a similar way to elements in that  the annotated file contains details of which
attributes have been  deleted and which have been modified.  This information is  used to  write out  the
correct set of attributes in the merged file.
<test1>
<p>To show 3-way merge for attributes</p>
<data attr1="unchanged" attr2="base" attr3="base" attr4="deleted in t1"
attr5="deleted in t2">
<list>
<i>100</i>
</list>
</data>
</test1>
Base file rl2-b.xml
<test1>
<p>To show 3-way merge for attributes</p>
<data attr1="unchanged" attr2="modified in t1" attr3="base"
attr5="deleted in t2" attr6="added in t1">
<list>
<i>100</i>
</list>
</data>
</test1>
Modified file rl2-t1.xml
Note that attr4 has been deleted, attr6 has been added and attr2 has been modified.
<test1>
<p>To show 3-way merge for attributes</p>
<data attr1="unchanged" attr2="base" attr3="modified in t2" attr4="deleted
in t1" attr7="added in t2">
<list>
<i>100</i>
</list>
</data>
</test1>
Modified file rl2-t2.xml
Page: 20
Presented at XML Europe 2002
http://www.deltaxml.com
Robin La Fontaine
Note that attr5 has been deleted, attr7 has been added and attr3 has been changed.
<test1>
<p>To show 3-way merge for attributes</p>
<data attr1="unchanged" attr2="modified in t1" attr6="added in t1"
attr3="modified in t2" attr7="added in t2">
<list>
<i>100</i>
</list>
</data>
</test1>
Final result: 3-way merged file for rl2 example
The final merged result shows that the correct merge has taken place: modified attributes are modified,
those deleted are deleted and those added are added to the final result. This is achieved using the annotated
intermediate files and the delta generated by comparing these. There is some string manipulation within
XSL to achieve this because the attribute values and annotation information has to be extracted from the
deltaxml:new-attributes and deltaxml:old-attributes  attribute  values.  Again,  if  there  were  specific
requirements  for  handling  specific  attributes,  these  could  be  accommodated  by  changing  the  XSL
styhlesheets.
Application  of  3-way  merge  to  remote  data
synchronization
Using the  3-way  merge described in  this  paper,  and  taking  advantage  of  the  basic  delta  comparison
capability, a scenario for synchronization of XML data between one or more remote (possibly off-line)
users and a central server is shown.
3-way merge used for XML data synchronization
In this scenario, the two systems start with some data which is synchronized. These data sets are then edited
both on the server and on the remote site to generate derived data files. In the diagram these are denoted
with  horizontal  lines  through  the  cylindrical  data  file representations.  The  following  process  is  then
executed to synchronize these.
(1) Create delta
(3) Re-create
remote data
using delta
Remote
Server
(2) Send delta to server
(4) 3-way merge
to update Server
(5) Create delta to
update Remote
(6) Apply delta to
update Remote
Low bandwidth:
only deltas sent
Documents you may be interested
Documents you may be interested