Current File : //usr/share/lib/xml/style/service_bundle_merge.xsl
<?xml version="1.0"?>

<!--
 -->

<!--
 Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 -->

<!--
 For split manifest validation begin with the partial document and import any
 missing elements from the included document.    This will yield a document
 which will have the necessary context for validation.
 -->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output
        omit-xml-declaration="no"
        doctype-system="/usr/share/lib/xml/dtd/service_bundle.dtd.1" />

    <xsl:template name="select">
        <xsl:param name="preserve" />
        <xsl:param name="import" />

        <xsl:choose>
            <xsl:when test="$preserve">
                <xsl:apply-templates select="$preserve" />
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates select="$import" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

    <!--
     Match the service node and copy its attributes, then for each document
     element preserve those which exist and import those which are
     missing.
     -->

    <xsl:template match="service">
        <xsl:variable name="doc"
            select="document($include,.)
                /service_bundle[@type = current()/../@type]
                    /service[@type = current()/@type and
                             @name = current()/@name and
                          @version = current()/@version]" />

        <xsl:copy>
            <xsl:apply-templates select="@*" />

            <xsl:call-template name="select">
                <xsl:with-param name="preserve"
                    select="create_default_instance" />
                <xsl:with-param name="import"
                    select="$doc/create_default_instance" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="single_instance" />
                <xsl:with-param name="import" select="$doc/single_instance" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="restarter" />
                <xsl:with-param name="import" select="$doc/restarter" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="dependency" />
                <xsl:with-param name="import" select="$doc/dependency" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="dependent" />
                <xsl:with-param name="import" select="$doc/dependent" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="method_context" />
                <xsl:with-param name="import" select="$doc/method_context" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve"
                    select="logfile_attributes" />
                <xsl:with-param name="import"
                    select="$doc/logfile_attributes" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="exec_method" />
                <xsl:with-param name="import" select="$doc/exec_method" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve"
                    select="notification_parameters" />
                <xsl:with-param name="import"
                    select="$doc/notification_parameters" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="property_group" />
                <xsl:with-param name="import" select="$doc/property_group" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="instance" />
                <xsl:with-param name="import" select="$doc/instance" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="stability" />
                <xsl:with-param name="import" select="$doc/stability" />
            </xsl:call-template>

            <xsl:call-template name="select">
                <xsl:with-param name="preserve" select="template" />
                <xsl:with-param name="import" select="$doc/template" />
            </xsl:call-template>
        </xsl:copy>
    </xsl:template>

    <!-- Catch any other nodes (really just for service_bundle though). -->

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>