Re: DFDL is great!

Michael Kay <[email protected]> Fri, 16 Jun 2023 16:56:00 +0100
Newsgroups gmane.text.xml.devel
Message-ID <[email protected]>
--Apple-Mail=_E1881F5F-A02C-4BCF-B4AF-DC03A270E1EB
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

I wonder how well this integrates with IXML?=20

Michael Kay
Saxonica

> On 16 Jun 2023, at 16:36, Roger L Costello <[email protected]> wrote:
>=20
> Hi Folks,
> =20
> DFDL =3D Data Format Description Language
> =20
> The idea behind DFDL is to describe a data format using a formal =
language (the DFDL language). That description is handed off to a tool =
(a DFDL processor) which understands the DFDL language. Also, an =
instance of the data format is provided to the DFDL processor. The DFDL =
processor uses the description to figure out how to parse the instance =
document. The DFDL processor creates an in-memory representation of the =
instance document. Then, depending how you configured the DFDL =
processor, the in-memory representation is serialized (output) as XML. =
Or JSON. Or EXI. Or some other form.
> =20
> The description is declarative. It states what is the structure of the =
data format. (Get a data format SME to help you describe the data =
format.) The description doesn't say how to parse the data format. The =
DFDL processor figures out how to parse the data format using the =
description of its structure.
> =20
> Plus, the same description that is used to parse the data format is =
used to unparse the XML (or JSON or EXI, etc.):
> =20
> data format --> DFDL (parse) --> XML --> DFDL (unparse) --> data =
format
> =20
> Why parse and unparse? Parsing and unparsing data ensures the data =
fully complies with the format, which greatly reduces data-borne cyber =
threats.=20
> =20
> Here is a graphic of the data chain:
> =20
> <image001.png>
> =20
> A bunch of data formats have already been described using the DFDL =
language. Here=E2=80=99s a repository of some of them:
> =20
> https://github.com/orgs/DFDLSchemas =
<https://github.com/orgs/DFDLSchemas>
> =20
> /Roger


--Apple-Mail=_E1881F5F-A02C-4BCF-B4AF-DC03A270E1EB
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D"">I =
wonder how well this integrates with IXML?&nbsp;<div class=3D""><br =
class=3D""></div><div class=3D"">Michael Kay</div><div =
class=3D"">Saxonica<br class=3D""><div><br class=3D""><blockquote =
type=3D"cite" class=3D""><div class=3D"">On 16 Jun 2023, at 16:36, Roger =
L Costello &lt;<a href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><meta =
charset=3D"UTF-8" class=3D""><div class=3D"WordSection1" style=3D"page: =
WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 13px; font-style: normal; font-variant-caps: normal; =
font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;"><div style=3D"margin: 0in; font-size: 11pt; font-family: Calibri, =
sans-serif;" class=3D""><span style=3D"" class=3D"">Hi Folks,<o:p =
class=3D""></o:p></span></div><div style=3D"margin: 0in; font-size: =
11pt; font-family: Calibri, sans-serif;" class=3D""><span style=3D"" =
class=3D""><o:p class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: =
0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D"">DFDL =3D Data Format Description Language<o:p =
class=3D""></o:p></span></div><div style=3D"margin: 0in; font-size: =
11pt; font-family: Calibri, sans-serif;" class=3D""><span style=3D"" =
class=3D""><o:p class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: =
0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D"">The idea behind DFDL is to<span =
class=3D"Apple-converted-space">&nbsp;</span><i =
class=3D"">describe</i><span =
class=3D"Apple-converted-space">&nbsp;</span>a data format using a =
formal language (the DFDL language). That description is handed off to a =
tool (a DFDL processor) which understands the DFDL language. Also, an =
instance of the data format is provided to the DFDL processor. The DFDL =
processor uses the description to figure out how to parse the instance =
document. The DFDL processor creates an in-memory representation of the =
instance document. Then, depending how you configured the DFDL =
processor, the in-memory representation is serialized (output) as XML. =
Or JSON. Or EXI. Or some other form.<o:p =
class=3D""></o:p></span></div><div style=3D"margin: 0in; font-size: =
11pt; font-family: Calibri, sans-serif;" class=3D""><span style=3D"" =
class=3D""><o:p class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: =
0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D"">The description is declarative. It states<span =
class=3D"Apple-converted-space">&nbsp;</span><i class=3D"">what</i><span =
class=3D"Apple-converted-space">&nbsp;</span>is the structure of the =
data format. (Get a data format SME to help you describe the data =
format.) The description doesn't say<span =
class=3D"Apple-converted-space">&nbsp;</span><i class=3D"">how</i><span =
class=3D"Apple-converted-space">&nbsp;</span>to parse the data format. =
The DFDL processor figures out how to parse the data format using the =
description of its structure.<o:p class=3D""></o:p></span></div><div =
style=3D"margin: 0in; font-size: 11pt; font-family: Calibri, =
sans-serif;" class=3D""><span style=3D"" class=3D""><o:p =
class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: 0in; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D"">Plus, the same description that is used to<span =
class=3D"Apple-converted-space">&nbsp;</span><i class=3D"">parse</i><span =
class=3D"Apple-converted-space">&nbsp;</span>the data format is used =
to<span class=3D"Apple-converted-space">&nbsp;</span><i =
class=3D"">unparse</i><span =
class=3D"Apple-converted-space">&nbsp;</span>the XML (or JSON or EXI, =
etc.):<o:p class=3D""></o:p></span></div><div style=3D"margin: 0in; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D""><o:p class=3D"">&nbsp;</o:p></span></div><div =
style=3D"margin: 0in; font-size: 11pt; font-family: Calibri, =
sans-serif;" class=3D""><span style=3D"" class=3D"">data format --&gt; =
DFDL (parse) --&gt; XML --&gt; DFDL (unparse) --&gt; data format<o:p =
class=3D""></o:p></span></div><div style=3D"margin: 0in; font-size: =
11pt; font-family: Calibri, sans-serif;" class=3D""><span style=3D"" =
class=3D""><o:p class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: =
0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D"">Why parse and unparse? Parsing and unparsing data =
ensures the data fully complies with the format, which greatly reduces =
data-borne cyber threats.&nbsp;<o:p class=3D""></o:p></span></div><div =
style=3D"margin: 0in; font-size: 11pt; font-family: Calibri, =
sans-serif;" class=3D""><span style=3D"" class=3D""><o:p =
class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: 0in; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D"">Here is a graphic of the data chain:<o:p =
class=3D""></o:p></span></div><div style=3D"margin: 0in; font-size: =
11pt; font-family: Calibri, sans-serif;" class=3D""><span style=3D"" =
class=3D""><o:p class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: =
0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D""><span =
id=3D"cid:[email protected]">&lt;image001.png&gt;</span></spa=
n><span style=3D"" class=3D""><o:p class=3D""></o:p></span></div><div =
style=3D"margin: 0in; font-size: 11pt; font-family: Calibri, =
sans-serif;" class=3D""><span style=3D"" class=3D""><o:p =
class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: 0in; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D"">A bunch of data formats have already been =
described using the DFDL language. Here=E2=80=99s a repository of some =
of them:<o:p class=3D""></o:p></span></div><div style=3D"margin: 0in; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" class=3D""><o:p class=3D"">&nbsp;</o:p></span></div><div =
style=3D"margin: 0in; font-size: 11pt; font-family: Calibri, =
sans-serif;" class=3D""><span style=3D"" class=3D""><a =
href=3D"https://github.com/orgs/DFDLSchemas" class=3D""><span =
style=3D"color: rgb(5, 99, 193);" =
class=3D"">https://github.com/orgs/DFDLSchemas</span></a><o:p =
class=3D""></o:p></span></div><div style=3D"margin: 0in; font-size: =
11pt; font-family: Calibri, sans-serif;" class=3D""><span style=3D"" =
class=3D""><o:p class=3D"">&nbsp;</o:p></span></div><div style=3D"margin: =
0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><span =
style=3D"" =
class=3D"">/Roger</span></div></div></div></blockquote></div><br =
class=3D""></div></body></html>=

--Apple-Mail=_E1881F5F-A02C-4BCF-B4AF-DC03A270E1EB--