CINXE.COM
Articles
<!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>Articles</title> <meta name="description" content=""/> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="icon" type="image/x-icon" href="/static/favicon.ico"/> <link rel="stylesheet" href="/static/CACHE/css/output.7ac6b21eee6a.css" type="text/css"> <link href="https://fonts.googleapis.com/css?family=Lato|Roboto" rel="stylesheet"/> <link rel="stylesheet" type="text/css" href="/static/css/print.css" media="print" /> <script async src="https://www.googletagmanager.com/gtag/js?id=G-6Z87ZDEY5E"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-6Z87ZDEY5E'); </script> <script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script> googletag.cmd.push(function() { googletag.defineSlot('/21754636678/xml.com-1', [[160, 600], [120, 240], [300, 250]], 'div-gpt-ad-1550450394815-0').addService(googletag.pubads()); googletag.defineSlot('/21754636678/xml.com-2', [[300, 250]], 'div-gpt-ad-1550513522284-0').addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.pubads().disableInitialLoad(); googletag.enableServices(); }); </script> <script> //load the apstag.js library !function(a9,a,p,s,t,A,g){if(a[a9])return;function q(c,r){a[a9]._Q.push([c,r])}a[a9]={init:function(){q("i",arguments)},fetchBids:function(){q("f",arguments)},setDisplayBids:function(){},targetingKeys:function(){return[]},_Q:[]};A=p.createElement(s);A.async=!0;A.src=t;g=p.getElementsByTagName(s)[0];g.parentNode.insertBefore(A,g)}("apstag",window,document,"script","//c.amazon-adsystem.com/aax2/apstag.js"); //initialize the apstag.js library on the page to allow bidding apstag.init({ pubID: '32676f4f-8458-484f-b742-dcd7ad80a504', //enter your pub ID here as shown above, it must within quotes adServer: 'googletag' }); apstag.fetchBids({ slots: [{ slotID: 'div-gpt-ad-1550450394815-0', //example: 'div-gpt-ad-1475102693815-0' slotName: '21754636678/xml.com-1', //example: '12345/box-1' sizes: [[160,600], [300,250], [120,400]] //example: [[300,250], [300,600]] }, { slotID: 'div-gpt-ad-1550513522284-0', //example: 'div-gpt-ad-1475185990716-0' slotName: '21754636678/xml.com-2', //example: '12345/leaderboard-1' sizes: [[300,250]] //example: [[728,90]] }], timeout: 2e3 }, function(bids) { // set apstag targeting on googletag, then trigger the first DFP request in googletag's disableInitialLoad integration googletag.cmd.push(function(){ apstag.setDisplayBids(); googletag.pubads().refresh(); }); }); </script> </head> <body class="articleindexpage "> <div class="title-bar hide-for-print" data-responsive-toggle="menu" data-hide-for="large"> <button class="menu-icon" type="button" value="Menu" data-toggle></button> <div class="title-bar-title">XML.com</div> </div> <div class="row"> <div class="top-bar hide-for-print" id="menu"> <div class="top-bar-left"> <a href="/"><img src="/static/img/XML_com_logo.svg" alt="XML.com logo"/></a> </div> <div class="top-bar-right"> <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown" role="menubar"> <li class=""><a href="/">Home</a></li> <li class=" active"> <a href="/articles/">Articles</a> </li> <li class=" "> <a href="/authors/">Authors</a> </li> <li class=" "> <a href="/news/">News</a> </li> <li class=" "> <a href="/job-board/">Job Board</a> </li> <li class="has-submenu "> <a href="/about/">About</a> <ul class="submenu menu vertical"> <li class=""> <a href="/about/contribute/">Contribute</a> </li> <li class=""> <a href="/about/style-guide/">Style guide</a> </li> <li class=""> <a href="/about/copyright/">Copyright</a> </li> <li class=""> <a href="/about/contact/">Contact</a> </li> <li class=""> <a href="/about/privacy/">Privacy Policy</a> </li> </ul> </li> <li class="has-form" style="background: transparent;"> <form id="cse-search-box" action="https://google.com/cse"> <input type="hidden" name="cx" value="partner-pub-9264479583913780:3063344556"/> <input type="hidden" name="ie" value="UTF-8" /> <input type="text" placeholder="Search" name="q" title="Google Search"/> <!--<input type="submit" name="sa" value="Search">--> </form> </li> </ul> </div> </div> </div> <div class="row"> <div class="medium-9 columns"> <nav aria-label="You are here:" role="navigation"> <ul class="breadcrumbs"> <li><a href="/">Home</a></li> <li class="current">Articles</li> </ul> </nav> <div id="content"> <div class="medium-12 columns" role="content"> <div id="article_list" class="row" data-equalizer> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2024/08/24/michael-sperberg-mcqueen-obituary/"> <h2>Michael Sperberg-McQueen (1954-2024)</h2></a> <em>Steven DeRose</em> An obituary for Michael Sperberg-McQueen (1954-2024), An Interdisciplinary Visionary <p> <a class="button secondary" href="/articles/2024/08/24/">24 August 2024</a> <a class="float-right button read" href="/articles/2024/08/24/michael-sperberg-mcqueen-obituary/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2024/07/22/string-analysis-with-analyze-string/"> <h2>String analysis with XSLT's analyze-string</h2></a> <em>Mukul Gandhi</em> Mukul Gandhi gives us a tutorial on the uses of, and differences between, XSLT’s analyze-string instruction and XPath’s analyze-string function. <p> <a class="button secondary" href="/articles/2024/07/22/">22 July 2024</a> <a class="float-right button read" href="/articles/2024/07/22/string-analysis-with-analyze-string/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2023/12/05/xml-path-language-xpath-higher-order-functions/"> <h2>XPath higher order functions in the context of XSLT</h2></a> <em>Mukul Gandhi</em> Mukul Gandhi introduces us to XPath 3.1's Higher Order Functions, as used in XSLT 3.0. <p> <a class="button secondary" href="/articles/2023/12/05/">5 December 2023</a> <a class="float-right button read" href="/articles/2023/12/05/xml-path-language-xpath-higher-order-functions/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2023/03/06/visualising-xml-schemas/"> <h2>Visualizing XML Schemas</h2></a> <em>Sven Reinck</em> Sven Reinck helps you understand your XML Schemas like never before with the power of visualization. <p> <a class="button secondary" href="/articles/2023/03/06/">6 March 2023</a> <a class="float-right button read" href="/articles/2023/03/06/visualising-xml-schemas/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2022/10/17/schematron-qlb-xslt/"> <h2>Schematron Query Language Binding and XSLT</h2></a> <em>Erik Siegel</em> Schematron's Query Language Binding is a little-known and underused feature of the language. Erik Siegel gives an introduction to its use. <p> <a class="button secondary" href="/articles/2022/10/17/">17 October 2022</a> <a class="float-right button read" href="/articles/2022/10/17/schematron-qlb-xslt/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2022/06/23/cals-table-viewer-visual-studio-code/"> <h2>A CALS Table Viewer for Visual Studio Code</h2></a> <em>Phil Fearon</em> CALS Tables (see ‘What are CALS Tables?’, below) are not easy to understand by looking at their XML source. At DeltaXML we have lots of CALS tables in our regression tests which we need to quickly visualise, especially if we need to understand exactly what went wrong in a failing test. These tables are embedded in a variety of source formats: DocBook, DITA, S1000D etc., and will often have DeltaXML change markup included in the table. We needed a quick way of visualising CALS tables from our test suite and so I used my ‘free sprint' time to write an XSLT-driven Visual Studio Code extension to do just that. We found it sped up our testing reviews significantly and we share it here in the hope that you will also find it a useful approach to viewing tables. <p> <a class="button secondary" href="/articles/2022/06/23/">23 June 2022</a> <a class="float-right button read" href="/articles/2022/06/23/cals-table-viewer-visual-studio-code/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2022/05/31/parsing-and-refactoring-fortran-code-xml/"> <h2>Parsing and refactoring FORTRAN code with XML</h2></a> <em>Philippe Marguinaud</em> In this article, Philippe Marguinaud explains how XML can be used to parse a language such as FORTRAN. The first big advantage over other existing approaches is that XML can represent both structure and hand-written content. The other benefit is that all power tools coming from the XML realm become instantly available for searching and editing the syntax tree. Eventually, the article shows how a FORTRAN syntax tree can be loaded in Firefox, using an XSL stylesheet. <p> <a class="button secondary" href="/articles/2022/05/31/">31 May 2022</a> <a class="float-right button read" href="/articles/2022/05/31/parsing-and-refactoring-fortran-code-xml/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2022/03/28/writing-invisible-xml-grammars/"> <h2>Writing Invisible XML grammars</h2></a> <em>Norm Tovey-Walsh</em> Norm Tovey-Walsh gives us a tour of the syntax of Invisible XML documents and how to write (and debug) grammars. <p> <a class="button secondary" href="/articles/2022/03/28/">28 March 2022</a> <a class="float-right button read" href="/articles/2022/03/28/writing-invisible-xml-grammars/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2022/03/01/invisible-xml/"> <h2>Invisible XML</h2></a> <em>Norm Tovey-Walsh</em> Norm Tovey-Walsh introduces Invisible XML, a language for describing the implicit structure of data, and a set of technologies for making that structure explicit as XML markup. <p> <a class="button secondary" href="/articles/2022/03/01/">1 March 2022</a> <a class="float-right button read" href="/articles/2022/03/01/invisible-xml/">Read</a> </p> </article> <hr /> </div> <div class="medium-12 columns"> <article class="article callout small"> <a href="/articles/2021/06/20/using-github-collaborative-xml-publishing/"> <h2>Using GitHub for Collaborative XML Publishing</h2></a> <em>G. Ken Holman</em> <p>Authoring a technical standard can distract from the development of the standard’s content. Equipping a standards committee effectively to satisfy the documentation obligation, without impacting on the technical development, benefits those involved and produces results faster.</p> <p>And writing is not the only task. Assembling complex work products can be finicky, and so leveraging automation where possible produces results more consistently.</p> <p>This case study shows how two OASIS technical committees collaboratively prepare documents for both OASIS and ISO submission.</p> <p>The committees’ goals were to:</p> <div class="itemizedlist"> <ul class="itemizedlist" style="list-style-type: disc; "> <li>maximize the time developing technical content, which is why the members joined in the first place;</li> <li>minimize the time spent formatting content twice to satisfy two sets of layout requirements;</li> <li>automate the production of intricate committee deliverables; and</li> <li>enable committee members to propose contributions to the editors in an efficient manner.</li> </ul> </div> <p>This case study illuminates the committees’ use of DocBook XML for authoring a single document to produce multiple layouts. Moreover, using XML provides options for generated content not readily available in other authoring environments.</p> <p>Also illustrated is how the editing and publishing process is supported by using the git repository and GitHub hosting for collaborators to use to make their proposed contributions to the editors. Together with the online XML publishing service from Réalta, this equips members to preview their draft work in final-form PDF and HTML at any time. This frees members of the burden of supporting specialized, expensive publishing tools they may not otherwise need.</p> <p>The end result for each committee is the hands-off production of complete work product deliverables including two different PDF layouts. </p> <p>IMPORTANT: This essay is not intended to replace the more detailed README.md instructions for the technical committee members found in their respective git repositories. Rather than get bogged down in details, this essay is meant to introduce and overview the strategy of using git and GitHub for collaborative committee work.</p> </div> <div id="d0e63"> <p> <b>Technical note</b> </p> <p>This monolithic HTML document includes embedded SVG graphic images that may not be visible on all browsers. The author has tested this file successfully on Chrome, Firefox, Opera, Edge, and Safari.</p> </div> <p> <a class="button secondary" href="/articles/2021/06/20/">20 June 2021</a> <a class="float-right button read" href="/articles/2021/06/20/using-github-collaborative-xml-publishing/">Read</a> </p> </article> <hr /> </div> </div> <ul class="pagination text-center"> Page 1 of 5 <li class="arrow"><a href="?page=2">»</a></li> </ul> </div> </div><!-- content --> </div> <aside id="sidebar" class="medium-3 columns hide-for-print"> <div class="text-center"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- 300x250 --> <ins class="adsbygoogle" style="display:inline-block;width:300px;height:250px" data-ad-client="ca-pub-9264479583913780" data-ad-slot="1017007355"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="text-center"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- Google-160x600 --> <ins class="adsbygoogle" style="display:inline-block;width:160px;height:600px" data-ad-client="ca-pub-9264479583913780" data-ad-slot="1629348156"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </aside> </div> <div class="row column"> <hr class="dotted"/> </div> <footer class="row column"> <p><strong>© Textuality Services, Inc.</strong> except for those articles with named authors or copyright holders. All trademarks and registered trademarks appearing on XML.com are the property of their respective owners.</p> </footer> <script src="/static/CACHE/js/output.d5b0ccff8392.js"></script> </body> </html>