﻿<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet href="#style" type="text/xsl" ?>
<GSM>

    <!-- Insert your Model Inventory XML here... -->

    <Stylesheet>
        <xsl:stylesheet version="1.0" id="style" xml:id="style" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="/">
            <html>
            <head>
                <title>GoldSim Model Inventory</title>
                <style type="text/css">
                h3.GTGTitle {
                    text-align:center;
                    font-family: "Calibri", sans-serif;
                    font-weight: bold;
                    color:black;
                }
                div.GTGMainPage {
                    margin:20px;
                    padding:20px;
                    background-color:#FFF9E1;
                }
                div.GTGFooter {
                    padding:10px;
                    margin:5px 15px;
                }
                p.GTGFooter {
                    padding:5px;
                    text-align:left;
                    font-family: "Calibri", sans-serif;
                    font-size:small;
                    font-weight:normal;
                    color:black;
                }
                div.GTGModelRoot {
                    padding:10px;
                    margin:5px 15px;
                }
                div.GTGModel {
                    padding:10px;
                    border-width:medium;
                    border-style:ridge;
                    border-color:gray;
                    margin:5px 15px;
                }
                div.GTGSubModel {
                    padding:5px;
                    border-width:medium;
                    border-style:solid;
                    border-color:black;
                    margin:5px 15px;
                }
                div.GTGContainer {
                    padding:5px;
                    border-width:thin;
                    border-style:dashed;
                    border-color:gray;
                    margin:5px 15px;
                }
                div.GTGDetails {
                    padding:5px;
                    margin:5px 15px;
                }
                h4.GTGModel {
                    text-align:left;
                    font-family: "Calibri", sans-serif;
                    font-weight: bold;
                    color:black;
                }
                li.GTGContainer {
                    font-family: "Calibri", sans-serif;
                    font-weight: normal;
                    list-style-type:square;
                    color:navy;
                }
                li.GTGSubModel {
                    font-family: "Calibri", sans-serif;
                    font-weight: bold;
                    list-style-type:square;
                    color:black;
                }
                li.GTGElement {
                    font-family: "Calibri", sans-serif;
                    font-weight: normal;
                    list-style-type:disc;
                    color:#1a1a1a;
                }
                li.GTGDescPath {
                    font-family: "Calibri", sans-serif;
                    font-weight: normal;
                    list-style-type:'- ';
                    color:#404040;
                }
                </style>
            </head>
            <div class="GTGMainPage">
                <xsl:apply-templates/>
            </div>
            </html>  
            </xsl:template>

            <!-- Particular templates -->
            <xsl:template match="/GSM">
                <body>
                <h3 class="GTGTitle">GoldSim Model Inventory - Containment Format</h3>
                <xsl:apply-templates select="Model"/>
                </body>
                <footer>
                <xsl:apply-templates select="Global" />
                </footer>
            </xsl:template>

            <xsl:template match="Model">
            <div class="GTGModelRoot">
                <div class="GTGModel">
                <h4 class="GTGModel">Model Root</h4>
                <ul>
                    <xsl:apply-templates/>
                </ul>
                </div>
            </div>
            </xsl:template>

            <xsl:template match="Container">
            <li class="GTGContainer">
                <b><xsl:value-of select="@type"/></b>: <xsl:value-of select="@id"/>
                <div class="GTGDetails">
                <ul>
                    <li class="GTGDescPath">Description: <xsl:value-of select="@desc"/></li>
                    <li class="GTGDescPath">Model Path: "<xsl:value-of select="@path"/>"</li>
                </ul>
                </div>
                <div class="GTGContainer">
                <ul>
                    <xsl:apply-templates/>
                </ul>
                </div>
            </li>
            </xsl:template>

            <xsl:template match="Container/Container">
            <li class="GTGContainer">
                <b><xsl:value-of select="@type"/></b>: <xsl:value-of select="@id"/>
                <div class="GTGDetails">
                <ul>
                    <li class="GTGDescPath">
                    Description: <xsl:value-of select="@desc"/>
                    </li>
                    <li class="GTGDescPath">
                    Model Path: "<xsl:value-of select="@path"/>"
                    </li>
                </ul>
                </div>
            </li>
            <div class="GTGContainer">
                <ul>    
                <xsl:apply-templates/>
                </ul>
            </div>
            </xsl:template>

            <xsl:template match="Element">
            <li class="GTGElement">
                <b><xsl:value-of select="@type"/></b>: <xsl:value-of select="@id"/>
                <div class="GTGDetails">
                <ul>
                    <li class="GTGDescPath">
                    Description: <xsl:value-of select="@desc"/>
                    </li>
                    <li class="GTGDescPath">
                    Model Path: "<xsl:value-of select="@path"/>"
                    </li>
                    <li>
                    <xsl:if test="Input[@order='Scalar']">
                    <xsl:for-each select="Input[@order='Scalar']">
                        Value: <xsl:value-of select="Equation"/>
                    </xsl:for-each>
                    </xsl:if>
                    <xsl:for-each select="Input[@order='Vector']">
                    <xsl:value-of select="@rowSet"/>
                    <xsl:text>: </xsl:text>
                        <xsl:for-each select="Row">
                        <ul>
                            <li>
                            <xsl:value-of select="@id"/>
                            <xsl:text>: </xsl:text>
                            <xsl:value-of select="Equation"/>
                            </li>
                        </ul>
                        </xsl:for-each>
                    </xsl:for-each>
                    <xsl:for-each select="Input[@order='Matrix']">
                    <xsl:value-of select="@columnSet"/>
                    <xsl:text>: </xsl:text>
                        <ul>
                        <xsl:for-each select="Column">
                        <xsl:text>Column </xsl:text>
                            <countNo><xsl:value-of select="position()"/></countNo>
                            <xsl:text>: </xsl:text>
                            <xsl:value-of select="../@rowSet"/>
                        <xsl:for-each select="Row">
                            <ul>
                            <li>
                                <xsl:value-of select="@id"/>
                                <xsl:text>: </xsl:text>
                                <xsl:value-of select="Equation"/>
                            </li>
                            </ul>
                        </xsl:for-each>
                        </xsl:for-each>
                        </ul>
                    </xsl:for-each>	
                    </li>
                </ul>				
                </div>
            </li>
            </xsl:template>

            <xsl:template match="Element[@type='SubModel']">
            <li class="GTGSubModel">
                <b>
                <xsl:value-of select="@type"/>
                </b>: <xsl:value-of select="@id"/>
                <div class="GTGDetails">
                <ul>
                    <li class="GTGDescPath">
                    Description: <xsl:value-of select="@desc"/>
                    </li>
                    <li class="GTGDescPath">
                    Model Path: "<xsl:value-of select="@path"/>"
                    </li>
                </ul>
                </div>
                <div class="GTGSubModel">
                <ul>
                    <xsl:apply-templates/>
                </ul>
                </div>
            </li>
            </xsl:template>

            <xsl:template match="Container/Element">
            <li class="GTGElement">
                <b><xsl:value-of select="@type"/></b>: <xsl:value-of select="@id"/>
                <div class="GTGDetails">
                <ul>
                    <li class="GTGDescPath">
                    Description: <xsl:value-of select="@desc"/>
                    </li>
                    <li class="GTGDescPath">
                    Model Path: "<xsl:value-of select="@path"/>"
                    </li>
                </ul>
                </div>
            </li>
            </xsl:template>

            <xsl:template match="Container/Element[@type='SubModel']">
            <li class="GTGSubModel">
                <b>
                <xsl:value-of select="@type"/>
                </b>: <xsl:value-of select="@id"/>
                <div class="GTGDetails">
                <ul>
                    <li class="GTGDescPath">
                    Description: <xsl:value-of select="@desc"/>
                    </li>
                    <li class="GTGDescPath">
                    Model Path: "<xsl:value-of select="@path"/>"
                    </li>
                </ul>
                </div>
                <div class="GTGSubModel">
                <ul>
                    <xsl:apply-templates/>
                </ul>
                </div>
            </li>
            </xsl:template>

            <xsl:template match="Global">
            <div class="GTGFooter">
                <p class="GTGFooter">
                Model Author: <xsl:value-of select="Author"/>, Created on: <xsl:value-of select="Created"/>
                </p>
                <p class="GTGFooter">
                File Location: "<xsl:value-of select="File"/>"
                </p>
            </div>
            </xsl:template>
        </xsl:stylesheet>
    </Stylesheet>
</GSM>
