<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ab.edge-technologies.com/docs/index.php?action=history&amp;feed=atom&amp;title=Appboard%2F2.6%2Fbuilder%2Fdata_sources%2Fweb_service%2Fxml-xslt-tutorial</id>
	<title>Appboard/2.6/builder/data sources/web service/xml-xslt-tutorial - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://ab.edge-technologies.com/docs/index.php?action=history&amp;feed=atom&amp;title=Appboard%2F2.6%2Fbuilder%2Fdata_sources%2Fweb_service%2Fxml-xslt-tutorial"/>
	<link rel="alternate" type="text/html" href="http://ab.edge-technologies.com/docs/index.php?title=Appboard/2.6/builder/data_sources/web_service/xml-xslt-tutorial&amp;action=history"/>
	<updated>2026-05-21T12:23:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>http://ab.edge-technologies.com/docs/index.php?title=Appboard/2.6/builder/data_sources/web_service/xml-xslt-tutorial&amp;diff=8066&amp;oldid=prev</id>
		<title>imported&gt;Jason.nicholls: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://ab.edge-technologies.com/docs/index.php?title=Appboard/2.6/builder/data_sources/web_service/xml-xslt-tutorial&amp;diff=8066&amp;oldid=prev"/>
		<updated>2015-04-30T10:59:29Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:59, 30 April 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>imported&gt;Jason.nicholls</name></author>
	</entry>
	<entry>
		<id>http://ab.edge-technologies.com/docs/index.php?title=Appboard/2.6/builder/data_sources/web_service/xml-xslt-tutorial&amp;diff=8065&amp;oldid=prev</id>
		<title>imported&gt;Jason.nicholls at 13:43, 22 September 2014</title>
		<link rel="alternate" type="text/html" href="http://ab.edge-technologies.com/docs/index.php?title=Appboard/2.6/builder/data_sources/web_service/xml-xslt-tutorial&amp;diff=8065&amp;oldid=prev"/>
		<updated>2014-09-22T13:43:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:XML XSLT Tutorial}}&lt;br /&gt;
[[Category:AppBoard 2.6]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
Included with the distribution under &amp;lt;tt&amp;gt;${application.home}/stylesheets/&amp;lt;/tt&amp;gt; are some example XSL files that correspond to a variety of sample XML files included under &amp;lt;tt&amp;gt;${application.home}/data/examples/xml/&amp;lt;/tt&amp;gt;. You can also use these as guides when you create your own XSL files. To see the result of a transformation (and to help debug custom XSL files), you can use the &amp;#039;Transform&amp;#039; option when running portal.bat or portal.sh. To do this, in the command line navigate to &amp;lt;tt&amp;gt;[INSTALL_HOME]/server/bin/&amp;lt;/tt&amp;gt; and run &amp;lt;tt&amp;gt;portal Transform&amp;lt;/tt&amp;gt; to display the possible arguments you can use when doing an XML/XSL transform. &lt;br /&gt;
&lt;br /&gt;
An example of a standard command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;portal Transform -in example.xml -xsl example.xsl -out output.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will take the input XML file and the indicated XSL file, do a transformation, and output the resulting XML to output.xml&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;tt&amp;gt;${application.home}/data/examples/xml/hierarchy.xml&amp;lt;/tt&amp;gt; as an example, this tutorial builds the XSL Transformation in a step-by-step manner. It will be helpful in following the tutorial to have the source XML and the target XML in separate windows or printed out.&lt;br /&gt;
&lt;br /&gt;
1. Review the basic structure of your source XML.&lt;br /&gt;
: This example consists of a single root node (&amp;quot;rspec&amp;quot;) with some descriptive child elements one of which (&amp;quot;computeResource&amp;quot;) contains nested information on compute nodes which contain further information including network interfaces. In outline form:&lt;br /&gt;
:* rspec&lt;br /&gt;
:** aggregate&lt;br /&gt;
:** description&lt;br /&gt;
:** lifetime&lt;br /&gt;
:** computeResource&lt;br /&gt;
:*** node&lt;br /&gt;
:**** networkInterface&lt;br /&gt;
:*** node&lt;br /&gt;
:**** networkInterface&lt;br /&gt;
:*** node&lt;br /&gt;
:**** networkInterface&lt;br /&gt;
2. Identify the data elements you want to transform into AppBoard Entities.&lt;br /&gt;
: In this case, we are interested in nodes and networkInterfaces which we will call Nodes and NICs.&lt;br /&gt;
3. Begin the XSLT with the xsl:stylesheet element and an xsl:output element:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Identify an element that has only a single instance and is the parent of all of the data elements you wish to capture as Entities. In many cases, that would be the root element (&amp;quot;rspec&amp;quot; in this example), but because there is only one &amp;quot;computeResource&amp;quot; instance we can reference it directly as &amp;quot;/rspec/computeResource&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Add a match template for that data element that emits the &amp;quot;result&amp;quot; element and definitions for the entities we will capture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/computeResource&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;result xmlns=&amp;quot;http://www.edgeti.com/xml-data&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;entity name=&amp;quot;Nodes&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;attributes&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute primaryKey=&amp;quot;true&amp;quot;&amp;gt;NodeId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute&amp;gt;Address&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                &amp;lt;/attributes&amp;gt;&lt;br /&gt;
            &amp;lt;/entity&amp;gt;&lt;br /&gt;
            &amp;lt;entity name=&amp;quot;NICs&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;attributes&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute primaryKey=&amp;quot;true&amp;quot;&amp;gt;NICId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute&amp;gt;Address&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                &amp;lt;/attributes&amp;gt;&lt;br /&gt;
            &amp;lt;/entity&amp;gt;&lt;br /&gt;
        &amp;lt;/result&amp;gt;            &lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: This only works for single instance elements. If there were multiple &amp;quot;computeResource&amp;quot; elements we would start with &amp;quot;/rspec&amp;quot; even if we weren&amp;#039;t capturing an Entity corresponding to &amp;quot;computeResource&amp;quot; instances.&lt;br /&gt;
&lt;br /&gt;
6. Add do-nothing templates for the peers of &amp;quot;computeResource&amp;quot; that we plan to ignore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/rspec/aggregate&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/rspec/description&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/rspec/lifetime&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Add a match template for the &amp;quot;node&amp;quot; elements to construct &amp;quot;record&amp;quot; elements for each instance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;template match=&amp;quot;node&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;record&amp;gt;&lt;br /&gt;
        &amp;lt;value name=&amp;quot;NodeId&amp;quot;&amp;gt;&amp;lt;value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;value name=&amp;quot;Address&amp;quot;&amp;gt;&amp;lt;value-of select=&amp;quot;address&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/record&amp;gt;&lt;br /&gt;
&amp;lt;/template&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: Note the use of &amp;quot;@id&amp;quot; to extract an attribute of the &amp;quot;node&amp;quot; element and the use of &amp;quot;address&amp;quot; to extract the value in a child element.&lt;br /&gt;
&lt;br /&gt;
8. Add a match template for the &amp;quot;networkInterface&amp;quot; elements. Note that we use &amp;quot;node/networkInterface&amp;quot; since that is the relative &amp;quot;path&amp;quot; from our &amp;quot;computeResource&amp;quot; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;node/networkInterface&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;record&amp;gt;&lt;br /&gt;
        &amp;lt;value name=&amp;quot;NICId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;value name=&amp;quot;Address&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ipAddress&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;value name=&amp;quot;NodeId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;../@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/record&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Place these after the template for &amp;quot;computeResource&amp;quot; and then add xsl:apply-templates elements to reference them to construct children of the &amp;quot;entity&amp;quot; elements in the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/computeResource&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;result xmlns=&amp;quot;http://www.edgeti.com/xml-data&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;entity name=&amp;quot;Nodes&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;attributes&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute primaryKey=&amp;quot;true&amp;quot;&amp;gt;NodeId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute&amp;gt;Address&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                &amp;lt;/attributes&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:apply-templates select=&amp;quot;node&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/entity&amp;gt;&lt;br /&gt;
            &amp;lt;entity name=&amp;quot;NICs&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;attributes&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute primaryKey=&amp;quot;true&amp;quot;&amp;gt;NICId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute&amp;gt;Address&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                &amp;lt;/attributes&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:apply-templates select=&amp;quot;node/networkInterface&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/entity&amp;gt;&lt;br /&gt;
        &amp;lt;/result&amp;gt;            &lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/aggregate&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/description&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/lifetime&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;template match=&amp;quot;node&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;record&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;NodeId&amp;quot;&amp;gt;&amp;lt;value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;Address&amp;quot;&amp;gt;&amp;lt;value-of select=&amp;quot;address&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/record&amp;gt;&lt;br /&gt;
    &amp;lt;/template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;node/networkInterface&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;record&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;NICId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;Address&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ipAddress&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/record&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: Now we have a working XSL Transform that defines our two entities and constructs all of the records. But, the hierarchy of the data gives us an association that we aren&amp;#039;t capturing.&lt;br /&gt;
&lt;br /&gt;
10. Define the association in the &amp;quot;Nodes&amp;quot; entity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
    &amp;lt;association fromKey=&amp;quot;NodeId&amp;quot; toEntity=&amp;quot;NICs&amp;quot; toKey=&amp;quot;NodeId&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Add an attribute to &amp;quot;NICs&amp;quot; to store the key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;entity name=&amp;quot;NICs&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;attributes&amp;gt;&lt;br /&gt;
        &amp;lt;attribute primaryKey=&amp;quot;true&amp;quot;&amp;gt;NICId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
        &amp;lt;attribute&amp;gt;Address&amp;lt;/attribute&amp;gt;&lt;br /&gt;
        &amp;lt;attribute&amp;gt;NodeId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/entity&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12. Use &amp;quot;../@id&amp;quot; in an xsl:value-of to add a &amp;quot;NodeId&amp;quot; value to the instances of &amp;quot;NICs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;node/networkInterface&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;record&amp;gt;&lt;br /&gt;
        &amp;lt;value name=&amp;quot;NICId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;value name=&amp;quot;Address&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ipAddress&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;value name=&amp;quot;NodeId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;../@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/record&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Resulting XSL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[xml,N]&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/computeResource&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;result xmlns=&amp;quot;http://www.edgeti.com/xml-data&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;entity name=&amp;quot;Nodes&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;attributes&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute primaryKey=&amp;quot;true&amp;quot;&amp;gt;NodeId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute&amp;gt;Address&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                &amp;lt;/attributes&amp;gt;&lt;br /&gt;
                &amp;lt;associations&amp;gt;&lt;br /&gt;
                    &amp;lt;association fromKey=&amp;quot;NodeId&amp;quot; toEntity=&amp;quot;NICs&amp;quot; toKey=&amp;quot;NodeId&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/associations&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:apply-templates select=&amp;quot;node&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/entity&amp;gt;&lt;br /&gt;
            &amp;lt;entity name=&amp;quot;NICs&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;attributes&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute primaryKey=&amp;quot;true&amp;quot;&amp;gt;NICId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute&amp;gt;Address&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;attribute&amp;gt;NodeId&amp;lt;/attribute&amp;gt;&lt;br /&gt;
                &amp;lt;/attributes&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:apply-templates select=&amp;quot;node/networkInterface&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/entity&amp;gt;&lt;br /&gt;
        &amp;lt;/result&amp;gt;            &lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/aggregate&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/description&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/rspec/lifetime&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;template match=&amp;quot;node&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;record&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;NodeId&amp;quot;&amp;gt;&amp;lt;value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;Address&amp;quot;&amp;gt;&amp;lt;value-of select=&amp;quot;address&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/record&amp;gt;&lt;br /&gt;
    &amp;lt;/template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;node/networkInterface&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;record&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;NICId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;Address&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ipAddress&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;value name=&amp;quot;NodeId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;../@id&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/record&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;Jason.nicholls</name></author>
	</entry>
</feed>