| <?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> |