Re: Asking for recommendations of xml 2 json open source projects

Peter Flynn <[email protected]> Tue, 24 Jan 2023 12:04:03 +0000
Newsgroups gmane.text.xml.devel
Organization Silmaril Consultants
Message-ID <[email protected]>
On 24/01/2023 02:28, John Cowan wrote:
> On Sat, Jan 21, 2023 at 8:05 AM Peter Flynn <[email protected] > wrote:
> 
>> How does it deal with XML-->JSON for deep mixed content? I have TEI
>> documents with analytic markup, on which the publisher's rendering
>> and the user's linguistic or semantic analysis depends, nested up
>> to 10 levels deep. I am under pressure from some quarters to "make 
>> the markup simpler" by using JSON.
> 
> Sure, it's straightforward.  Each XML element is a JSON array whose 
> first element is the element name as a JSON string, whose second
> element is the attribute mapping as a JSON object, and whose
> remaining elements are the content as JSON strings or arrays.  The
> attribute mapping can be omitted if it is empty.
> 
> Thus:
> 
> <foo/> => ["foo"]
> 
> <foo bar="baz" zam="quux"/> => ["foo", {"bar":"baz", "zam":"quux"}]
> 
> <foo>32 <dog/></foo> => ["foo", "32 ", "["dog"]]
> 
> <foo bar="baz"><dog zam="quux"/> => ["foo", {"bar":"baz"}, ["dog"", 
> {"zam":"quux"}]]

Thank you, that's very useful. Here's a line from a poem

	  <lg n="7" type="quatrain">
	    <l n="1">
	      <app>
		<rdg wit="H">
		  <ps>
		    <fn>
		      <sic>Chór</sic>
		    </fn>
		  </ps>
		  mh'ainm ann</rdg>
		<rdg wit="Eg">Mór m' ainm-si an</rdg>
	      </app>
	      gach baile buan.</l>
	    <l n="2">inghion <ps><fn>Aodha</fn></ps> fa geal gruad</l>
	    <l n="3"><ps><fn>Sithrioch</fn></ps> mo chéile ann
	      gach cath.</l>
	    <l n="4">Mac <ps><fn>Turgeis</fn></ps> na
	      t-tréan-chreach.</l>
	  </lg>

The root element type is TEI.2 and the xpointer to the <sic> element is 
root.child(1,#element,'TEXT').child(1,#element,'BODY').child(1,#element,'DIV0').child(29,#element,'DIV1').child(6,#element,'LG').child(1,#element,'L').child(1,#element,'APP').child(1,#element,'RDG').child(1,#element,'PS').child(1,#element,'FN').child(1,#element,'SIC')
so the <sic> element is 15 deep in the tree.

What editors and rendering engines would be suitable to replace 
oXygen/Emacs and XSLT?

Peter