<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
span.EmailStyle24
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle25
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1087581191;
        mso-list-template-ids:1828101468;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1
        {mso-list-id:1148549232;
        mso-list-type:hybrid;
        mso-list-template-ids:632689716 114874376 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.5pt;
        font-family:Symbol;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Segoe UI";}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l2
        {mso-list-id:1365248114;
        mso-list-type:hybrid;
        mso-list-template-ids:-1352772446 549498240 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l3
        {mso-list-id:1430541480;
        mso-list-template-ids:-314695088;}
@list l3:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level2
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4
        {mso-list-id:1669139164;
        mso-list-template-ids:2007400502;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5
        {mso-list-id:2098283964;
        mso-list-template-ids:-497631644;}
@list l5:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level2
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">… plus some particularly interesting excerpts from interview by Roger Costello on xml-dev mailing list.  Warning message: brain teasers ahead, enjoy!  8)<o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>From:</b> Roger L Costello costello@mitre.org <br>
<b>Sent:</b> Saturday, January 29, 2022 8:06 AM<br>
<b>To:</b> xml-dev@lists.xml.org<br>
<b>Subject:</b> [xml-dev] Interview of Michael Kay on YouTube<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">Excellent interview. Filled with tips, wisdom, humbleness, and humor. https://www.youtube.com/watch?v=2Zt9oJtFKGw&t=6s<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">A few excerpts from the interview:<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">1. The BBC’s coverage of the 2012 London Olympics used the free version of Saxon.
<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">2.  What makes a good product? Users must be able to understand the error messages. People will tell you, one thing I like about Saxon is the error messages. To me, a bad error message is something
 that really needs to be fixed. Error messages are what users are dealing with every day. They are reading my error messages. If those glare out as being unhelpful, as being badly spelt, then that’s their experience with the product, so it’s important to get
 it right. I put a lot of effort into those sorts of little details. Getting good error messages it really quite an art. Do you phrase the error message in terms of the proper terminology of the spec, or do you use the terminology that the users are using (which
 might be quite wrong)? For example, what many users call a “tag” isn’t what the spec calls a tag. They’ll use “tag” to mean “element.” So which word am I going to use in an error message? It’s quite hard to get that sort of thing right. Getting a balance between
 a message that is technically correct and a message that users understand, sometimes requires a fair bit of thought. And then you’ve got to phrase the error message in terms of what the user was trying to do, not what was going on internally. That again gives
 you a significant challenge. So you have to think about those sorts of things. <o:p>
</o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">3. My project over the last year has been translating the Java code of Saxon into a C# version of Saxon. To do that, I had to write a translator for Java to C#. How do you write such a translator?
 Java has a syntactic structure, you parse it so you’ve got a tree structured information structure and you’re converting that into another tree structured information structure from which you generate C#. How do you transform one tree to another?
<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">4. The benefit of XSLT is not that it’s XML, the benefit is its paradigm: you’re doing a recursive descent, rule-based transformation. That’s what XSLT is, it’s a rule-based language.
<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">5. If you read a textbook on writing compilers, it talks about compiling as a pipeline of tree-to-tree transformations. That is exactly the typical architecture of an XSLT transformation.
<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">6. The resistance to XSLT is because for most people (particularly programmers), XSLT is so different from anything they’ve ever seen before. Using XSLT requires some rewiring of the brain. The
 enthusiasts of XSLT get over this initial learning curve and discover why this weirdness is actually a good thing. 
<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:8.0pt;line-height:105%">7. I sometimes find new technologies quite hard to get familiar with and adopt. That’s because when I look at a new technology I want to have a deep conceptual understanding of it before using
 it. I know other people who are much better at picking up something new. They have a different learning style. They learn by example. They see something that works, they bend it and adapt it and make it fit without ever having a deep understanding. You can
 over-intellectualize things. I’m on that end of the spectrum. <o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in">8. A lot of people have tried to create a different syntax for XSLT. It’s not that difficult to do. I think what’s happened is that when people have done it, they’ve realized that they thought syntax was
 the problem, but it wasn’t. The problem is not the syntax. The problem is the concepts: What is a template rule? What does apply-templates actually mean? You
<i>think</i> syntax is the difficulty, but it’s not. The difficulty is actually the semantics of the language. Improving the syntax doesn’t help. The other thing is that once you’ve gotten past the stage of the syntax looking weird, you actually realize that
 there are some benefits to having an XML-based syntax. The benefits of any big XSLT-based application that I’ve seen ends up exploiting the fact that XSLT is XML. You’re using the same conceptual tool set to manipulate your data and your source code. That’s
 something that comes from Lisp. XML and XSLT are a continuation of the Lisp concept of not separating data from programs.<o:p></o:p></p>
<p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">all the best, Don<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">-- <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">X3D graphics, virtual worlds, Navy robotics https://</span>
<span style="font-size:10.0pt;font-family:"Courier New"">faculty.nps.edu/brutzman<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Brutzman, Donald (Don) (CIV) <brutzman@nps.edu>
<br>
<b>Sent:</b> Wednesday, February 2, 2022 3:24 AM<br>
<b>To:</b> X3D Public Mailing List (x3d-public@web3d.org) <x3d-public@web3d.org><br>
<b>Cc:</b> Brutzman, Donald (Don) (CIV) <brutzman@nps.edu><br>
<b>Subject:</b> RE: fwd: [ANN] Saxon 11.1 released for XSLT support; Michael Kay interview<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is a tremendous <span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">
interview with Michael Kay regarding Saxon (which we use extensively) and also development of software projects along with standards.  Michael has led W3C XSLT working groups and language development for many years.  Both his software documentation and his
 books are amazingly thorough (produced using XML/XSLT).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Many great insights, worth repeated viewing.<o:p></o:p></span></p>
<div style="border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo3">Shift-M/51: Michael Kay about XSLT, XML, and software business - YouTube<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo3"><a href="https://www.youtube.com/watch?v=2Zt9oJtFKGw&t=6s">https://www.youtube.com/watch?v=2Zt9oJtFKGw&t=6s</a><o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Yegor Bugayenko / Егор Бугаенко<o:p></o:p></p>
<p class="MsoNormal">14.9K subscribers<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Michael Kay is the editor of the W3C XSLT 2.0 and 3.0 language specifications for performing XML transformations and the developer of the Saxon XSLT and XQuery processing software.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">0:00 Introduction<o:p></o:p></p>
<p class="MsoNormal">0:40 Is XML old?<o:p></o:p></p>
<p class="MsoNormal">3:32 Story of XML<o:p></o:p></p>
<p class="MsoNormal">11:22 Versions of Saxon XSLT<o:p></o:p></p>
<p class="MsoNormal">14:28 Michael's activity on Stack Overflow<o:p></o:p></p>
<p class="MsoNormal">20:42 Understanding of XSLT<o:p></o:p></p>
<p class="MsoNormal">24:43 XSLT simplification<o:p></o:p></p>
<p class="MsoNormal">27:16 How The W3C (World Wide Web Consortium) works<o:p></o:p></p>
<p class="MsoNormal">42:26 Compiling XSLT to binary code<o:p></o:p></p>
<p class="MsoNormal">59:43 Michael's favorite language<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My blog: <a href="https://www.yegor256.com">https://www.yegor256.com</a><o:p></o:p></p>
<p class="MsoNormal">My books: <a href="https://www.yegor256.com/books.html">https://www.yegor256.com/books.html</a><o:p></o:p></p>
<p class="MsoNormal">My GitHub: <a href="https://github.com/yegor256">https://github.com/yegor256</a> (don’t hesitate to follow in order to stay informed)<o:p></o:p></p>
<p class="MsoNormal">My Telegram channel with recent news and updates: <a href="https://t.me/yegor256news">
https://t.me/yegor256news</a> (subscribe to not miss a thing)<o:p></o:p></p>
<p class="MsoNormal">My Twitter with daily and weekly updates: <a href="https://twitter.com/yegor256">
https://twitter.com/yegor256</a> (follow me!)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">#xslt #interview #xml #programming<o:p></o:p></p>
<div style="border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Transcript:<o:p></o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l2 level1 lfo6"><a href="https://www.yegor256.com/shift-m/2022/51.html">https://www.yegor256.com/shift-m/2022/51.html</a><o:p></o:p></li></ul>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">all the best, Don<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">-- <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Don Brutzman  Naval Postgraduate School, Code USW/Br       
<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">X3D graphics, virtual worlds, Navy robotics https://</span>
<span style="font-size:10.0pt;font-family:"Courier New"">faculty.nps.edu/brutzman<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Brutzman, Donald (Don) (CIV) <br>
<b>Sent:</b> Wednesday, February 2, 2022 2:40 AM<br>
<b>To:</b> X3D Public Mailing List (<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>) <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>><br>
<b>Cc:</b> <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><br>
<b>Subject:</b> fwd: [ANN] Saxon 11.1 released for XSLT support (Java C# C++ Python PHP JSON)<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><a href="https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.xml.org%2Farchives%2Fxml-dev%2F202202%2Fmsg00000.html&data=04%7C01%7Cbrutzman%40nps.edu%7C2d37a0eb5f6b41f73cb608d9e63e7a78%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637793978311075842%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=af%2Bor0qBSDC6G9fsNNN0X4zXkkt7425zEjn9u72nSAA%3D&reserved=0">http://lists.xml.org/archives/xml-dev/202202/msg00000.html</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="background:#006699"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:white">[ANN] Saxon 11.1<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo9">
<em><span style="font-size:13.5pt;font-family:"Arial",sans-serif">From</span></em><span style="font-size:13.5pt;font-family:"Arial",sans-serif">: <b>Michael Kay
<a href="mailto:mike@saxonica.com">mike@saxonica.com</a></b><o:p></o:p></span></li><li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo9">
<em><span style="font-size:13.5pt;font-family:"Arial",sans-serif">To</span></em><span style="font-size:13.5pt;font-family:"Arial",sans-serif">: xml-dev
<a href="mailto:xml-dev@lists.xml.org">xml-dev@lists.xml.org</a><o:p></o:p></span></li><li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo9">
<em><span style="font-size:13.5pt;font-family:"Arial",sans-serif">Date</span></em><span style="font-size:13.5pt;font-family:"Arial",sans-serif">: Wed, 2 Feb 2022 09:52:17 +0000<o:p></o:p></span></li></ul>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="0" width="100%" noshade="" style="color:black" align="center">
</div>
<pre style="margin-left:8.4pt;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">We are delighted to announce Saxon 11.1, a raft of new products covering three language platforms (SaxonJ, SaxonCS, and SaxonC), all built from the same source code. The software can be downloaded from the usual places (see <a href="https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.saxonica.com%2F&data=04%7C01%7Cbrutzman%40nps.edu%7C2d37a0eb5f6b41f73cb608d9e63e7a78%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637793978311075842%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=aCECPIwHucbClCh7NOapiGBWfFl%2FeTpIaLykT5dJ2HQ%3D&reserved=0">www.saxonica.com</a>) though a few corners of the website have yet to be updated.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">For SaxonJ (Java), this is the first major release in nearly two years. There's a long list of detailed changes that you can find in the documentation, but the main highlights are:<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* New functions and syntax extensions, some of them experimental. Some are very simple, for example, "A otherwise B" selects A if it exists, otherwise it selects B. Some are more complex and powerful, such as the saxon:update and saxon:deep-update instructions in XSLT. Please try them out and give us feedback.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* A new framework for resolving URIs that refer to external resources, integrating catalog-based resolution where appropriate.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* Most callbacks are now provided via functional interfaces, allowing them to be easily written as lambda expressions.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* Timezone handling has moved forward to the modern Java date/time libraries.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* Numerous minor changes to make JSON processing easier<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">Internally, there's a set of classes for handling Unicode strings. The main motivation for this was to allow common code across Java and C#, but it also improves speed and reduces memory requirements for many string handling operations. The effect is not uniform however; for very simple transformations of documents consisting exclusively of ASCII text, there is generally a memory saving but a small overhead in processing time.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">For SaxonCS (.NET 5 and 6 on Windows, Mac, and Linux), this is essentially a bug-fixing release for 11.0. The most important issues fixed relate to localisation (in particular, running on machines whose default Culture setting is not English). For a full list of fixed bugs, please go to <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsaxonica.plan.io%2Fprojects%2Fsaxon%2Fissues&data=04%7C01%7Cbrutzman%40nps.edu%7C2d37a0eb5f6b41f73cb608d9e63e7a78%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637793978311075842%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=W6M732kq%2BBTHO2gxlmJg5ZX9h8JlVYXK5V%2B31bO9Z50%3D&reserved=0">https://saxonica.plan.io/projects/saxon/issues</a> and filter the list of bugs for those labelled as "fixed in maintenance release 11.1". In addition to bug fixes, there are some functional changes:<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">  * As with SaxonJ, there is a new framework for resolving URIs, based on the C# version of the catalog-based xml resolver. The use of the System.Xml.XmlResolver interface has been largely discontinued, except where needed for interoperation with the Microsoft parser, because of its inflexibility in handling different kinds of resources.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">  * A few new API methods are implemented to plug gaps, in response to user feedback<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">  * XQuery Update is fully supported (in 11.0 the code was present but largely untested).<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">SaxonCS on Mac is still awaiting notarization from Apple; until that's achieved there may be security warnings when you download it.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">For SaxonC (C++, Python, and PHP, on Windows, Mac, and Linux) this is the first release since 2019.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* The Java code base has moved forward from 9.9 to 11.1, and the build process is now integrated with SaxonJ and SaxonCS so that bug fixes can be applied simultaneously to all three products.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* There are improvements in multi-threading, when multiple transformations using the same stylesheet are executed in parallel in a web server<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* Memory management of XDM objects is improved<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* Localization (using ICU-J) is improved<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* Handling of Unicode strings in the various language APIs is improved, reducing the scope for encoding issues.<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">* There are many API extensions and improvements for all three languages (C++, Python, and PHP)<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">Michael Kay<o:p></o:p></span></pre>
<pre style="margin-left:8.4pt"><span style="font-size:13.5pt;font-family:"Arial",sans-serif;color:black">Saxonica<o:p></o:p></span></pre>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>