<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE root [ 
   <!ENTITY nl "&#10;">  
   <!ENTITY nbsp "&#160;">  
   ]>
<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:rf="http://schemas.roadintranet.org/road-faq-1"
    xmlns:rs="http://schemas.roadintranet.org/road-database-schema-1"
    >
        <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <xsl:text>&#xa;</xsl:text>
    <xsl:processing-instruction name="xml-stylesheet">
        <xsl:text>type="text/xsl" href="../xsl/road-faq.xsl"</xsl:text>
    </xsl:processing-instruction>
    <xsl:text>&#xa;</xsl:text>
        <rf:topic  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
            xsi:schemaLocation="http://schemas.roadintranet.org/road-faq-1 ../xsl/road-faq.xsd"
            title="Road Database Schema"
            file="roaddb-schema-faq.xml"
            >
            <xsl:text>&#xa;</xsl:text>
            <xsl:copy-of select="*/rf:section"/>
            <rf:section id="roaddb-domains" title="Column domains">
                <xsl:for-each select="*/rs:domains/rf:section">
                    <xsl:call-template name="faq-domain-item"/>
                </xsl:for-each>
            </rf:section>
            <xsl:for-each select="*/rs:views/rf:section">
            <xsl:call-template name="faq-table-section"/>
        </xsl:for-each>
        <xsl:for-each select="*/rs:tables/rf:section">
            <xsl:call-template name="faq-table-section"/>
        </xsl:for-each>
    </rf:topic>
    </xsl:template>
 
    <xsl:template name="faq-table-section">
        <xsl:text>&#xa;</xsl:text>
         <xsl:copy>
                <xsl:copy-of select="@*"/>
                <xsl:text>&#xa;</xsl:text>
             <xsl:copy-of select="node()[name(.) != 'rs:table']"/>
             <xsl:for-each select="rs:table">
               <rf:item>
                   <xsl:copy-of select="@id"/>
                   <xsl:attribute name="title" select="'RoadDB', @id,  '--', @title "/>
                   <p><xsl:copy-of select="node()[name(.) != 'rs:column']"/> </p> 
                  Columns
                   <ul>
                       <xsl:for-each select="rs:column">
                           <li>
                               <xsl:text>&#xa;</xsl:text>
                               <xsl:value-of select="@id"/> -- <xsl:if test="@domain or @view-table">
                                    <rf:iref item="{@domain, @view-table}" part="{if (@view-column)
                                        then @view-column else if (@view-table)
                                        then @id else ()}"/></xsl:if>
                               <xsl:for-each select="@identity, @default, @null, @index, @index-columns,
                                   @include-columns, @foreign-columns, @foreign-key">
                                   <xsl:value-of select="concat(' ', name(.), '=', . )" />
                               </xsl:for-each>
                               <xsl:text>  </xsl:text>
                               <xsl:copy-of select="node()"/>
                           </li>
                       </xsl:for-each>
                   </ul>
               </rf:item>  
             </xsl:for-each>
         </xsl:copy>
        
    </xsl:template>
    
    <xsl:template name="faq-domain-item">
        <xsl:text>&#xa;</xsl:text>
        <rf:item>
            <xsl:copy-of select="@id"/>
            <xsl:attribute name="title" select="'RoadDB', @title"/>
            <p><xsl:copy-of select="node()[name(.) != 'rs:domain']"/></p>
            Domains
            <ul>
            <xsl:for-each select="rs:domain">
                <li><xsl:value-of select="@title"/> -- <a name="{@id}"/>
                    <xsl:choose>
                        <xsl:when test="@sql-type">[<xsl:value-of select="@sql-type"/>] </xsl:when>
                        <xsl:when test="@same-as and @table">[<rf:iref item="{@table}"
                            part="{@column}"/> <rf:iref item="{@same-as}"/>] </xsl:when>
                        <xsl:when test="@same-as">[ <rf:iref item="{@same-as}"/>] </xsl:when>
                    </xsl:choose>
                    <xsl:copy-of select="node()"/>
                </li>
            </xsl:for-each>
            </ul>
        </rf:item>
    </xsl:template>
 </xsl:stylesheet>
