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? <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 <<a href=3D"mailto:[email protected]" = class=3D"">[email protected]</a>> 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""> </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""> </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"> </span><i = class=3D"">describe</i><span = class=3D"Apple-converted-space"> </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""> </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"> </span><i class=3D"">what</i><span = class=3D"Apple-converted-space"> </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"> </span><i class=3D"">how</i><span = class=3D"Apple-converted-space"> </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""> </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"> </span><i class=3D"">parse</i><span = class=3D"Apple-converted-space"> </span>the data format is used = to<span class=3D"Apple-converted-space"> </span><i = class=3D"">unparse</i><span = class=3D"Apple-converted-space"> </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""> </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 --> = DFDL (parse) --> XML --> DFDL (unparse) --> 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""> </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. <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""> </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""> </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]"><image001.png></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""> </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""> </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""> </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--