<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:menu="http://openoffice.org/2001/menu">
    <xsl:template name="heading-menu">
        <xsl:param name="level"/>
        <xsl:if test="$level &gt; 0">
            <xsl:call-template name="heading-menu">
                <xsl:with-param name="level" select="$level - 1"/>
            </xsl:call-template>
            <menu:menu menu:id="slot:{$level}" menu:label="Level ~{$level} - h{$level}">
                <menu:menupopup>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.h{$level}()" menu:label="Heading {$level} - h~{$level}"/>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.h{$level}num()" menu:label="Numbered Heading {$level} - h{$level}~#"/>
                </menu:menupopup>
            </menu:menu>
        </xsl:if>
    </xsl:template>
    <xsl:template name="quote-menu">
        <xsl:param name="level"/>
        <xsl:if test="$level &gt; 0">
            <xsl:call-template name="quote-menu">
                <xsl:with-param name="level" select="$level - 1"/>
            </xsl:call-template>
            <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.bq{$level}()" menu:label="Blockquote {$level} - q~{$level}"/>
        </xsl:if>
    </xsl:template>
    <xsl:template name="list-menu">
        <xsl:param name="level"/>
        <xsl:if test="$level &gt; 0">
            <xsl:call-template name="list-menu">
                <xsl:with-param name="level" select="$level - 1"/>
            </xsl:call-template>
            <menu:menu menu:id="slot:{$level}" menu:label="Level ~{$level} - li{$level}">
                <menu:menupopup>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.li{$level}bull()" menu:label="Bullet {$level} - li{$level}~*"/>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.li{$level}num()" menu:label="Numbered {$level} - li{$level}~#"/>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.li{$level}p()" menu:label="Paragraph {$level} - li{$level}~p"/>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.li{$level}a()" menu:label="Lowercase Alpha {$level} - li{$level}~a"/>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.li{$level}alpha()" menu:label="~Uppercase Alpha {$level} - li{$level}~A"/>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.li{$level}i()" menu:label="Lowercase Roman {$level} - li{$level}~i"/>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.li{$level}rom()" menu:label="Uppercase ~Roman {$level} - li{$level}~I"/>
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.dt{$level}()" menu:label="Definition ~Term {$level} - dt{$level}"/> 
                    <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.dd{$level}()" menu:label="Definition ~Description {$level} - dd{$level}"/>
                </menu:menupopup>
            </menu:menu>
        </xsl:if>
    </xsl:template>

    <xsl:template match="menu:menu" priority="5">
      <xsl:copy-of select="."/>
    </xsl:template>

    <xsl:template match="/">
    <menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
     
     <xsl:apply-templates select="*/menu:menu"/>
        <menu:menu menu:id="slot:4" menu:label="~Styles">
            <menu:menupopup>
                <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.p()" menu:label="~Paragraph - p"/>
                <menu:menu menu:id="slot:1" menu:label="~Headings - h">
                    <menu:menupopup>
                        <xsl:call-template name="heading-menu">
                            <xsl:with-param name="level">5</xsl:with-param>
                        </xsl:call-template>
                    </menu:menupopup>
                </menu:menu>
                <menu:menu menu:id="slot:2" menu:label="~List Item - li">
                    <menu:menupopup>
                        <xsl:call-template name="list-menu">
                            <xsl:with-param name="level">5</xsl:with-param>
                        </xsl:call-template>
                    </menu:menupopup>
                </menu:menu>
                <menu:menu menu:id="slot:3" menu:label="~Blockquote">
                    <menu:menupopup>
                        <xsl:call-template name="quote-menu">
                            <xsl:with-param name="level">5</xsl:with-param>
                        </xsl:call-template>
                    </menu:menupopup>
                </menu:menu>
                <menu:menu menu:id="slot:4" menu:label="~Inline (Character style)">
                    <menu:menupopup>
                        <xsl:apply-templates select="document('wp-interop-style-data.xml')//inline"/>
                    </menu:menupopup>
                </menu:menu>
            </menu:menupopup>
        </menu:menu>
      </menu:menubar>
    </xsl:template>
    <xsl:template match="inline">
        <xsl:variable name="macro-name">
            <xsl:call-template name="make-macro-name">
                <xsl:with-param name="style-name" select="name"/>
            </xsl:call-template>
        </xsl:variable>
        <menu:menuitem menu:id="macro://./Standard.WPInteropStyles.{$macro-name}()" menu:label="{desc} - {name}"/>
    </xsl:template>
    <xsl:template name="make-macro-name">
        <xsl:param name="style-name"/>
        <xsl:choose>
            <xsl:when test="starts-with($style-name,'i-')">
                <xsl:value-of select="concat('ii', substring-after($style-name, 'i-'))"/>
            </xsl:when>
          
            <xsl:otherwise>
                <xsl:value-of select="$style-name"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>
