| 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>