<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Structured Authoring &#187; XSLT</title>
	<atom:link href="http://structuredauthoring.org/category/xslt/feed/" rel="self" type="application/rss+xml" />
	<link>http://structuredauthoring.org</link>
	<description>Learning Structured Authoring - Tools and Processes</description>
	<lastBuildDate>Tue, 17 Aug 2010 15:03:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>XSLT &#8211; Converting a Document to Change All Text</title>
		<link>http://structuredauthoring.org/sa/xslt-converting-document-change-text/</link>
		<comments>http://structuredauthoring.org/sa/xslt-converting-document-change-text/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 13:50:56 +0000</pubDate>
		<dc:creator>douglaspaulwade</dc:creator>
				<category><![CDATA[Structured Authoring]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://structuredauthoring.org/?p=301</guid>
		<description><![CDATA[Using XSLT, I want to display some examples, however, not show you the original text. My sample file is a real-world example, but the content is a distraction. This simple transformation will convert all of the text nodes (document text) to x&#8217;s. During the transformation, the XSLT stylesheet will convert, all the capital, lowercase letters [...]]]></description>
			<content:encoded><![CDATA[<p>Using XSLT, I want to display some examples, however, not show you the original text. My sample file is a real-world example, but the content is a distraction. This simple transformation will convert all of the text nodes (document text) to x&#8217;s. During the transformation, the XSLT stylesheet will convert, all the capital, lowercase letters and the numbers to the lower case &#8216;x&#8217;. It will leave the punctuation alone, and the elements&#8217; attributes are left unchanged.</p>
<p><strong>Here is a sample snippet of the input file of S1000D Issue 3, XML:</strong></p>
<div class="dean_ch" style="white-space: wrap;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;UTF-8&quot;</span><span class="re2">?&gt;</span></span></p>
<p><span class="sc3"><span class="re1">&lt;dmodule</span> <span class="re0">xmlns:xsi</span>=<span class="st0">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><br />
&nbsp;<span class="re0">xmlns:rdf</span>=<span class="st0">&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;</span><br />
&nbsp;<span class="re0">xmlns:dc</span>=<span class="st0">&quot;http://www.purl.org/dc/elements/1.1/&quot;</span><br />
&nbsp;<span class="re0">xmlns:xlink</span>=<span class="st0">&quot;http://www.w3.org/1999/xlink&quot;</span><br />
&nbsp;<span class="re0">xsi:noNamespaceSchemaLocation</span>=<span class="st0">&quot;http://www.s1000d.org/S1000D_3-0/xml_schema_master/dm/faultSchema.xsd&quot;</span><span class="re2">&gt;</span></span></p>
<p>&nbsp;<span class="sc3"><span class="re1">&lt;idstatus<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;dmaddres<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;dmc<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;avee<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;modelic<span class="re2">&gt;</span></span></span>AAA<span class="sc3"><span class="re1">&lt;/modelic<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;sdc<span class="re2">&gt;</span></span></span>B<span class="sc3"><span class="re1">&lt;/sdc<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;chapnum<span class="re2">&gt;</span></span></span>28<span class="sc3"><span class="re1">&lt;/chapnum<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;section<span class="re2">&gt;</span></span></span>0<span class="sc3"><span class="re1">&lt;/section<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;subsect<span class="re2">&gt;</span></span></span>0<span class="sc3"><span class="re1">&lt;/subsect<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;subject<span class="re2">&gt;</span></span></span>00<span class="sc3"><span class="re1">&lt;/subject<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;discode<span class="re2">&gt;</span></span></span>00<span class="sc3"><span class="re1">&lt;/discode<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;discodev<span class="re2">&gt;</span></span></span>A<span class="sc3"><span class="re1">&lt;/discodev<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;incode<span class="re2">&gt;</span></span></span>421<span class="sc3"><span class="re1">&lt;/incode<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;incodev<span class="re2">&gt;</span></span></span>A<span class="sc3"><span class="re1">&lt;/incodev<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;itemloc<span class="re2">&gt;</span></span></span>A<span class="sc3"><span class="re1">&lt;/itemloc<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/avee<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/dmc<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;dmtitle<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;techname<span class="re2">&gt;</span></span></span>FUEL LEAK IN FORWARD COMPARTMENT AREA<span class="sc3"><span class="re1">&lt;/techname<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;infoname<span class="re2">&gt;</span></span></span>OBSERVED FAULT PROCEDURE<span class="sc3"><span class="re1">&lt;/infoname<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/dmtitle<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;issno</span> <span class="re0">issno</span>=<span class="st0">&quot;001&quot;</span> <span class="re0">type</span>=<span class="st0">&quot;new&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;issdate</span> <span class="re0">day</span>=<span class="st0">&quot;01&quot;</span> <span class="re0">month</span>=<span class="st0">&quot;01&quot;</span> <span class="re0">year</span>=<span class="st0">&quot;2009&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/dmaddres<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;status<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;security</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;rpc</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;orig</span><span class="re2">/&gt;</span></span></div>
<p><strong>Here is the transformation stylesheet:</strong></p>
<div class="dean_ch" style="white-space: wrap;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;UTF-8&quot;</span><span class="re2">?&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;xsl:stylesheet</span> <span class="re0">xmlns:xsl</span>=<span class="st0">&quot;http://www.w3.org/1999/XSL/Transform&quot;</span><br />
&nbsp;<span class="re0">xmlns:xs</span>=<span class="st0">&quot;http://www.w3.org/2001/XMLSchema&quot;</span><br />
&nbsp;<span class="re0">exclude-result-prefixes</span>=<span class="st0">&quot;xs&quot;</span><br />
&nbsp;<span class="re0">version</span>=<span class="st0">&quot;2.0&quot;</span><span class="re2">&gt;</span></span></p>
<p>&nbsp;<span class="sc3"><span class="coMULTI">&lt;!&#8211; Use indent yes for development, no for production &#8211;&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;xsl:output</span> <span class="re0">method</span>=<span class="st0">&quot;xml&quot;</span> <span class="re0">indent</span>=<span class="st0">&quot;yes&quot;</span><span class="re2">/&gt;</span></span></p>
<p>&nbsp;<span class="sc3"><span class="coMULTI">&lt;!&#8211;<br />
&nbsp;Template match all items, except<br />
&nbsp;SGML Notations and Entities e.g., illustrations.<br />
&nbsp;&#8211;&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;xsl:template</span> <span class="re0">match</span>=<span class="st0">&quot;@*|element()|comment()|processing-instruction()&quot;</span> <span class="re0">mode</span>=<span class="st0">&quot;#all&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;xsl:copy<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;xsl:apply-templates</span> <span class="re0">select</span>=<span class="st0">&quot;@*|node()&quot;</span> <span class="re0">mode</span>=<span class="st0">&quot;#current&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/xsl:copy<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/xsl:template<span class="re2">&gt;</span></span></span></p>
<p>&nbsp;<span class="sc3"><span class="coMULTI">&lt;!&#8211; Using the replace function,<br />
&nbsp;context is: string, pattern, replacement string&#8211;&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;xsl:template</span> <span class="re0">match</span>=<span class="st0">&quot;text()&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;xsl:value-of</span> <span class="re0">select</span>=<span class="st0">&quot;replace(.,&#8217;[a-zA-Z0-9]&#8216;,&#8217;x')&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/xsl:template<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/xsl:stylesheet<span class="re2">&gt;</span></span></span></div>
<p><strong>Here is the result.s tree (a snippet).</strong></p>
<div class="dean_ch" style="white-space: wrap;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;UTF-8&quot;</span><span class="re2">?&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;dmodule</span> <span class="re0">xmlns:xsi</span>=<span class="st0">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><br />
&nbsp;<span class="re0">xmlns:rdf</span>=<span class="st0">&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;</span><br />
&nbsp;<span class="re0">xmlns:dc</span>=<span class="st0">&quot;http://www.purl.org/dc/elements/1.1/&quot;</span><br />
&nbsp;<span class="re0">xmlns:xlink</span>=<span class="st0">&quot;http://www.w3.org/1999/xlink&quot;</span><br />
&nbsp;<span class="re0">xsi:noNamespaceSchemaLocation</span>=<span class="st0">&quot;http://www.s1000d.org/S1000D_3-0/xml_schema_master/dm/faultSchema.xsd&quot;</span><span class="re2">&gt;</span></span></p>
<p>&nbsp;<span class="sc3"><span class="re1">&lt;idstatus<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;dmaddres<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;dmc<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;avee<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;modelic<span class="re2">&gt;</span></span></span>xxx<span class="sc3"><span class="re1">&lt;/modelic<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;sdc<span class="re2">&gt;</span></span></span>x<span class="sc3"><span class="re1">&lt;/sdc<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;chapnum<span class="re2">&gt;</span></span></span>xx<span class="sc3"><span class="re1">&lt;/chapnum<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;section<span class="re2">&gt;</span></span></span>x<span class="sc3"><span class="re1">&lt;/section<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;subsect<span class="re2">&gt;</span></span></span>x<span class="sc3"><span class="re1">&lt;/subsect<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;subject<span class="re2">&gt;</span></span></span>xx<span class="sc3"><span class="re1">&lt;/subject<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;discode<span class="re2">&gt;</span></span></span>xx<span class="sc3"><span class="re1">&lt;/discode<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;discodev<span class="re2">&gt;</span></span></span>x<span class="sc3"><span class="re1">&lt;/discodev<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;incode<span class="re2">&gt;</span></span></span>xxx<span class="sc3"><span class="re1">&lt;/incode<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;incodev<span class="re2">&gt;</span></span></span>x<span class="sc3"><span class="re1">&lt;/incodev<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;itemloc<span class="re2">&gt;</span></span></span>x<span class="sc3"><span class="re1">&lt;/itemloc<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/avee<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/dmc<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;dmtitle<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;techname<span class="re2">&gt;</span></span></span>xxxx xxxx xx xxxxxxx xxxxxxxxxxx xxxx<span class="sc3"><span class="re1">&lt;/techname<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;infoname<span class="re2">&gt;</span></span></span>xxxxxxxx xxxxx xxxxxxxxx<span class="sc3"><span class="re1">&lt;/infoname<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/dmtitle<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;issno</span> <span class="re0">issno</span>=<span class="st0">&quot;001&quot;</span> <span class="re0">type</span>=<span class="st0">&quot;new&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;issdate</span> <span class="re0">day</span>=<span class="st0">&quot;01&quot;</span> <span class="re0">month</span>=<span class="st0">&quot;01&quot;</span> <span class="re0">year</span>=<span class="st0">&quot;2009&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;/dmaddres<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;status<span class="re2">&gt;</span></span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;security</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;rpc</span><span class="re2">/&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;orig</span><span class="re2">/&gt;</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://structuredauthoring.org/sa/xslt-converting-document-change-text/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XSLT &#8211; A Starting Point</title>
		<link>http://structuredauthoring.org/xslt/xslt-a-starting-point/</link>
		<comments>http://structuredauthoring.org/xslt/xslt-a-starting-point/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 13:50:28 +0000</pubDate>
		<dc:creator>douglaspaulwade</dc:creator>
				<category><![CDATA[XSLT]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[oXygen]]></category>

		<guid isPermaLink="false">http://structuredauthoring.org/?p=293</guid>
		<description><![CDATA[I recently returned from an XSLT class taught by G. Ken Holman of Crane Softwrights. The class was five days training on XSLT, XQuery, and XPath. The class took place in Walnut Creek, California, August 3-7th, 2009. This was very intense. It was like trying to get a drink of water out of a fire hose. [...]]]></description>
			<content:encoded><![CDATA[<p>I recently returned from an XSLT class taught by G. Ken Holman of <a href="http://www.cranesoftwrights.com/">Crane Softwrights</a>. The class was five days training on XSLT, XQuery, and XPath. The class took place in Walnut Creek, California, August 3-7th, 2009. This was very intense. It was like trying to get a drink of water out of a fire hose. Ken covered every aspect of the specifications. The class was so over whelming that Joe (my co-worker) and I, being newbies, were clearly out classed. Most of the students had taken the class before, and one gentlemen just took it a month ago.</p>
<p>Being a newbie, I am going to post items on transformations that are not about covering everything in the specification; there are plenty of books that cover that. I want to give easy-to-follow examples which can be used in converting documents from one flavor of XML to another. I will not cover creating HTML pages or other outputs from these transformations.</p>
<p>I am no expert, but posting about a subject will help me improve upon writing XSLT. Being that I have a publishing background, I favor XSLT over XQuery (used more for machine-to-machine conversions).</p>
<p>From my IDE, I will be using &lt;<a href="http://www.oxygenxml.com/">oXygen/&gt;</a>. I prefer it because it has a XSLT debugger, and boy, do I need it. It has several XSLT processors, like Xalan, and Saxon and Saxon-SA (Schema Aware) built in. For my source file, I will be using a S1000D Schema document, which all of the text node (words) have been changed to &#8220;x&#8221;s. That transformation will be posted in upcoming post. This is to protect the data and not display the content, so it does not take on any significance or meaning. If you are interested, &lt;oXygen&gt; has a 30 day free trial version, and/or you can purchase the <a title="Academic/Non-Commercial" href="http://www.oxygenxml.com/buy_academic_edition.html">Academic or Non-Commercial</a> version for $64.</p>
<p>XSL stands for EXtensible Stylesheet Language and is a  style sheet language for XML documents. XSLT stands for XSL Transformations. You can use XSLT to transform XML documents into other formats such as other XML documents, HTML, XHTML, and using XSLT-FO (format objects) transform XML to PDF, for example.</p>
<p>The specification is at version 2.0 (2.1 is coming soon), but not all vendors fully support 2.0, as of yet. The specification version 1.0 has been around for some time, and since I am new all of my examples will be in version 2.0, why learn version 1.0 when 2.0 is clearly more verbose.</p>
<p>XSLT is an XML (version 1.0) document. It must be well formed and valid. Below is an example of XSLT stylesheet used to transform an XML document. While it is valid, the stylesheet does not do much; its only output is: <strong>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;</strong>.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;UTF-8&quot;</span><span class="re2">?&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;xsl:stylesheet</span> <span class="re0">xmlns:xsl</span>=<span class="st0">&quot;http://www.w3.org/1999/XSL/Transform&quot;</span><br />
&nbsp;<span class="re0">xmlns:xs</span>=<span class="st0">&quot;http://www.w3.org/2001/XMLSchema&quot;</span><br />
&nbsp;<span class="re0">exclude-result-prefixes</span>=<span class="st0">&quot;xs&quot;</span><br />
&nbsp;<span class="re0">version</span>=<span class="st0">&quot;2.0&quot;</span><span class="re2">&gt;</span></span></p>
<p>&nbsp;<span class="sc3"><span class="re1">&lt;xsl:template</span> <span class="re0">match</span>=<span class="st0">&quot;/&quot;</span> <span class="re2">/&gt;</span></span></p>
<p><span class="sc3"><span class="re1">&lt;/xsl:stylesheet<span class="re2">&gt;</span></span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://structuredauthoring.org/xslt/xslt-a-starting-point/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
