blob: 84a684d0dbe19d4b4905682db4e423e520b39e06 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="DFDLTutorialStylesheet.xsl"?>
<tdml:testSuite description="A Sample TDML File Illustrating that a HTML Tutorial Page Can Be Directly Created."
suiteName="test tutorial"
xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://example.com"
xmlns:ex="http://example.com"
xmlns="http://www.w3.org/1999/xhtml">
<tdml:tutorial>
<p>This content is before any of the other content in the TDML file.
</p>
<p>Here is some sample content. Anything XHTML works here.</p>
<p>
DFDL has this <a href='http://opensource.ncsa.illinois.edu/projects/artifacts/DFDL/latest/documentation/Manual/#_Toc398030723'>bitOrder property</a>. Let's talk about that.
Here's a quote from the spec., something I expect many TDML tutorials to want to do so as to highlight specific phrasing or language.
</p>
<blockquote cite='http://opensource.ncsa.illinois.edu/projects/artifacts/DFDL/latest/documentation/Manual/#_Toc398030723'>
The bits of a byte each have a place value or significance of 2
<sup>n</sup>
, for n from 0 to 7.
Hence, the byte value 255 = 2
<sup>7</sup>
+ 2
<sup>6</sup>
+ 2
<sup>5</sup>
+ 2
<sup>4</sup>
+ 2
<sup>3</sup>
+ 2
<sup>2</sup>
+ 2
<sup>1</sup>
+ 2
<sup>0</sup>
.
A bit can always be unambiguously identified as the 2
<sup>n</sup>
-bit.
The bit order is the correspondence of a bit's numeric significance to the bit position (1 to 8) within the byte.
</blockquote>
Now I can think of 36 decimal as a polynomial in any base I want e.g.
<p>
0x
<sup>2 </sup>
+ 3x
<sup>1</sup>
+ 6x
<sup>0</sup>
= 36 if x is 10.
</p>
<p>
equivalently, this polynomial:
</p>
<p>
0x
<sup>7 </sup>
+ 0x
<sup>6 </sup>
+ 1x
<sup>5 </sup>
+ 0x
<sup>4 </sup>
+ 0x
<sup>3 </sup>
+ 1x
<sup>2 </sup>
+ 0x
<sup>1 </sup>
+ 0x
<sup>0</sup>
= 36 when x is 2.
</p>
<p>
Note that the above is only mathematics. No bits have any "positions". They just have their associated mathematical place value that they are being multiplied-by to get a total value.
</p>
<p>
That's enough. Now let's look at the first schema in this demo file. It has nothing whatsoever to do with the above discussion of bit-order.
</p>
</tdml:tutorial>
<tdml:defineSchema name="mySchema">
<dfdl:format ref="tns:daffodilTest1"/>
<xs:element name="data" type="xs:int" dfdl:lengthKind="explicit" dfdl:length="{ xs:unsignedInt(2) }"/>
<xs:element tdml:tutorialInclude="no" name="shouldNotShowInTutorial" type="xs:int" dfdl:inputValueCalc="{ 5 }"/>
</tdml:defineSchema>
<tdml:defineSchema name="shouldNotAppearInTutorial" tdml:tutorialInclude="no">
<dfdl:format ref="tns:daffodilTest1"/>
<xs:element name="shouldNotAppearInTutorial" type="xs:int" dfdl:lengthKind="explicit" dfdl:length="{ xs:unsignedInt(2) }"/>
</tdml:defineSchema>
<tdml:tutorial>
<p>This content is after the first define schema. A schema doesn't have to be first, it just is in this example.</p>
</tdml:tutorial>
<tdml:parserTestCase name="testTutorialElementsParse" root="data" model="mySchema">
<tdml:tutorial>
<p>Start of a parser test case.</p>
</tdml:tutorial>
<tdml:document>37</tdml:document>
<tdml:tutorial>
<p>After the document element of a parser test case. This would be a common place for some diagrams, so here's examples of two ways of doing that.</p>
<p>First we have an image that came from a PNG graphics file drawn somehow. Anything that can create a PNG can work.
Also, commonly web files will have links to images in other files, but what we're doing here is including the image data directly in the XHTML of this
tutorial TDML file.</p>
<img
src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAboAAABECAYAAAD3GPBYAAAAAXNSR0ICQMB9xQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAB6OSURBVHja7Z0H2BXV0cdDBwFBEVEUsYu9iyJYKPZPjd1gb7F3xYZiAbEksSv2XrD3XmLvXaNGYxJjNMWSpiZq7nd++83wLMuWs3f3XF/eb+Z5/o++dy977jl7Zv4zc+ac/dHxxx//I4PBYDAY2itsEAwGg8FgRGcwGAwGgxGdwWAwGAxGdAaDwWAwGNEZDAaDwWBEZzAYDAZDZaJzMtBhY4PBYDAY2jDWdejcLNFt27Fjx8Ycc8wRFLPPPnvDtdXo27dv8Lb69OkTtUWbodvq1atXo0OHDsHbmW222aI+8d/Qbc0666xRW/369QveVs+ePRutmH/Mu1bNid69e7dkTphOmU79f9EpGb+vHHo3S3RbDBgwoPHHP/6x8be//S0YXnnllWhQHn744aDtgDvuuCNq65133gne1s9//vPIsH322WdB23nqqaeiPj399NPB+3Tttdc2OnXq1Pjwww+Dt3XiiSdGyh+6nYceeigav1dffTV4WxdeeGGjW7du7VKnfvWrXwVv64wzzojI7q9//WvQdtClVunU9ddf3+50innH+DEPQ7d11VVX0danDr2aJrq555678Z///KcRUn77299Gg/LSSy81Qstjjz0WtfXnP/85eFsYNbyN0PL2229PMzSh5a677oqU8u9//3vwtnAU8NhCy4svvhiN3+9+97vgbV133XUR0bVHnfrTn/4UvK1LLrkkch5DC7rUKp2655572p1OMe8YP+ZhaLn99turE91cc83V+Oc//xn0h/7617+OBuXZZ58NPijqvX/88cfB2zrvvPMiovv222+DtvPaa69FfXr99deD9+m2226LlBKPOrScdtppLVHKZ555Jhq/999/P3hbeJ8QXXvUqT/84Q/B25oyZUpEdKEdBXSpVTpFRNzedIp5x/gxD0PLzTffbESXpZRGdM2JEV01MaKrJkZ0M4dOGdG1EaU0omtOjOiqiRFdNTGimzl0yoiujSilEV1zYkRXTYzoqokR3cyhU+2a6F544YXGKaec0th7770bRx55ZOOWW25pfP3117UrJcRBUcRR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'/>
<p>Next we have an SVG diagram. A great thing about HTML5 is that SVG is part of it, so you can just put diagrams
directly into your HTML.</p>
<svg width="100%" height="80" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<g>
<title>Layer 1</title>
<rect id="svg_1" height="55" width="87" y="10" x="44" stroke-width="5" stroke="#000000" fill="#FF0000"/>
<rect id="svg_2" height="58" width="131" y="10" x="172" stroke-width="5" stroke="#000000" fill="#FF0000"/>
<rect id="svg_3" height="58" width="96" y="10" x="353" stroke-width="5" stroke="#000000" fill="#FF0000"/>
<rect id="svg_4" height="61" width="103" y="10" x="488" stroke-width="5" stroke="#000000" fill="#FF0000"/>
</g>
</svg>
<p>Well that was fun. Now let's look at the Infoset.</p>
</tdml:tutorial>
<tdml:infoset>
<tdml:dfdlInfoset>
<ex:data>37</ex:data>
</tdml:dfdlInfoset>
</tdml:infoset>
<tdml:tutorial>
<p>After the infoset element of a parser test case we're going to summarize here about the example (parserTestCase) above.</p>
</tdml:tutorial>
</tdml:parserTestCase>
<tdml:tutorial>
<p>This is between the above example, and the next DFDL schema in the tutorial. Here's another DFDL schema. This one will be an unparsing
example.</p>
</tdml:tutorial>
<tdml:defineSchema name="s">
<xs:include schemaLocation="xsd/built-in-formats.xsd"/>
<dfdl:format ref="ex:daffodilTest1"/>
<xs:element name="bar" dfdl:lengthKind="explicit" dfdl:length="5" type="xs:string"/>
</tdml:defineSchema>
<tdml:tutorial>
<p>Ok, that was a pretty dull schema. Now let's look at the example that uses it.</p>
</tdml:tutorial>
<tdml:unparserTestCase name="testTutorialElementsUnparse" root="bar" model="s">
<tdml:tutorial>
<p>At the begining of the unparserTestCase we would explain the infoset we're going to unparse. But we want to show
that we can suppress them if we want. So there should NOT be an infoset below.</p>
</tdml:tutorial>
<tdml:infoset tdml:tutorialInclude="no">
<tdml:dfdlInfoset>
<ex:bar>Hello</ex:bar>
</tdml:dfdlInfoset>
</tdml:infoset>
<tdml:tutorial>
<p>That was NOT a pretty nice little infoset. Now we'll discuss the data we expect to be produced from it by unparsing.</p>
</tdml:tutorial>
<tdml:document>Hello</tdml:document>
<tdml:tutorial>
<p>But enough about data. Let's talk about how cool it is to create tutorials directly from TDML.</p>
</tdml:tutorial>
</tdml:unparserTestCase>
<tdml:tutorial>
<p>After that unparser example (before whatever is next - another schema, another test case/example. In this case we're just going to end here.</p>
</tdml:tutorial>
</tdml:testSuite>