xref: /aoo4110/main/officecfg/util/alllang.xsl (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2*b1cdbd2cSJim Jagielski<!--***********************************************************
3*b1cdbd2cSJim Jagielski *
4*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
5*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
6*b1cdbd2cSJim Jagielski * distributed with this work for additional information
7*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
8*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
9*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
10*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
11*b1cdbd2cSJim Jagielski *
12*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
13*b1cdbd2cSJim Jagielski *
14*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
15*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
16*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
18*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
19*b1cdbd2cSJim Jagielski * under the License.
20*b1cdbd2cSJim Jagielski *
21*b1cdbd2cSJim Jagielski ***********************************************************-->
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielski<xsl:transform 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
26*b1cdbd2cSJim Jagielski		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
27*b1cdbd2cSJim Jagielski		xmlns:xs="http://www.w3.org/2001/XMLSchema"
28*b1cdbd2cSJim Jagielski		xmlns:oor="http://openoffice.org/2001/registry"
29*b1cdbd2cSJim Jagielski		xmlns:install="http://openoffice.org/2004/installation"
30*b1cdbd2cSJim Jagielski        	exclude-result-prefixes="install">
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski<!-- Get the correct format -->
33*b1cdbd2cSJim Jagielski<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski<!--************************** PARAMETER ******************************** -->
36*b1cdbd2cSJim Jagielski<xsl:param name="locale"/>
37*b1cdbd2cSJim Jagielski<xsl:param name="module"/>
38*b1cdbd2cSJim Jagielski<xsl:param name="xcs"/>
39*b1cdbd2cSJim Jagielski<xsl:param name="schemaRoot">.</xsl:param>
40*b1cdbd2cSJim Jagielski<xsl:param name="fallback-locale">en-US</xsl:param>
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski<xsl:variable name="schemaRootURL">
43*b1cdbd2cSJim Jagielski    <xsl:value-of select="$schemaRoot"/>
44*b1cdbd2cSJim Jagielski</xsl:variable>
45*b1cdbd2cSJim Jagielski<xsl:variable name="schemaURL">
46*b1cdbd2cSJim Jagielski    <xsl:value-of select="$xcs"/>
47*b1cdbd2cSJim Jagielski</xsl:variable>
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski<!--************************** TEMPLATES ******************************** -->
50*b1cdbd2cSJim Jagielski<!-- ensure that at least root is available -->
51*b1cdbd2cSJim Jagielski	<xsl:template match="/oor:component-data">
52*b1cdbd2cSJim Jagielski		<xsl:copy>
53*b1cdbd2cSJim Jagielski			<xsl:choose>
54*b1cdbd2cSJim Jagielski				<xsl:when test="string-length($locale)">
55*b1cdbd2cSJim Jagielski			        <xsl:apply-templates select = "@*" mode="locale"/>
56*b1cdbd2cSJim Jagielski					<xsl:apply-templates select = "node|prop" mode="locale"/>
57*b1cdbd2cSJim Jagielski				</xsl:when>
58*b1cdbd2cSJim Jagielski				<xsl:otherwise>
59*b1cdbd2cSJim Jagielski			        <xsl:apply-templates select = "@*"/>
60*b1cdbd2cSJim Jagielski					<xsl:for-each select="node|prop">
61*b1cdbd2cSJim Jagielski						<xsl:variable name="component-schema" select="document($schemaURL)/oor:component-schema"/>
62*b1cdbd2cSJim Jagielski						<xsl:apply-templates select=".">
63*b1cdbd2cSJim Jagielski							<xsl:with-param name="component-schema" select="$component-schema"/>
64*b1cdbd2cSJim Jagielski							<xsl:with-param name="context" select="$component-schema/component/*[@oor:name = current()/@oor:name]"/>
65*b1cdbd2cSJim Jagielski							<xsl:with-param name="find-module" select="$module"/>
66*b1cdbd2cSJim Jagielski						</xsl:apply-templates>
67*b1cdbd2cSJim Jagielski					</xsl:for-each>
68*b1cdbd2cSJim Jagielski				</xsl:otherwise>
69*b1cdbd2cSJim Jagielski			</xsl:choose>
70*b1cdbd2cSJim Jagielski		</xsl:copy>
71*b1cdbd2cSJim Jagielski	</xsl:template>
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski<!-- locale dependent data -->
74*b1cdbd2cSJim Jagielski	<xsl:template match="node|prop" mode = "locale">
75*b1cdbd2cSJim Jagielski        <xsl:choose>
76*b1cdbd2cSJim Jagielski            <xsl:when test="$locale=$fallback-locale">
77*b1cdbd2cSJim Jagielski                <xsl:if test="descendant::value[@xml:lang=$locale]/../value[not (@xml:lang)]">
78*b1cdbd2cSJim Jagielski  			        <xsl:copy>
79*b1cdbd2cSJim Jagielski				        <xsl:apply-templates select = "@*" mode="locale"/>
80*b1cdbd2cSJim Jagielski				        <xsl:apply-templates select = "node|prop|value" mode = "locale"/>
81*b1cdbd2cSJim Jagielski			        </xsl:copy>
82*b1cdbd2cSJim Jagielski                </xsl:if>
83*b1cdbd2cSJim Jagielski            </xsl:when>
84*b1cdbd2cSJim Jagielski            <xsl:otherwise>
85*b1cdbd2cSJim Jagielski                <xsl:if test="descendant::value[@xml:lang = $locale]">
86*b1cdbd2cSJim Jagielski  			        <xsl:copy>
87*b1cdbd2cSJim Jagielski				        <xsl:apply-templates select = "@*" mode="locale"/>
88*b1cdbd2cSJim Jagielski				        <xsl:apply-templates select = "node|prop|value" mode = "locale"/>
89*b1cdbd2cSJim Jagielski			        </xsl:copy>
90*b1cdbd2cSJim Jagielski                </xsl:if>
91*b1cdbd2cSJim Jagielski            </xsl:otherwise>
92*b1cdbd2cSJim Jagielski        </xsl:choose>
93*b1cdbd2cSJim Jagielski	</xsl:template>
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski	<xsl:template match="value" mode="locale">
96*b1cdbd2cSJim Jagielski		<xsl:if test="@xml:lang=$locale and not(@install:module)">
97*b1cdbd2cSJim Jagielski			<xsl:copy>
98*b1cdbd2cSJim Jagielski				<xsl:apply-templates select = "@*" mode="locale"/>
99*b1cdbd2cSJim Jagielski				<xsl:copy-of select="node()"/>
100*b1cdbd2cSJim Jagielski			</xsl:copy>
101*b1cdbd2cSJim Jagielski		</xsl:if>
102*b1cdbd2cSJim Jagielski	</xsl:template>
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski	<xsl:template match = "@*" mode="locale">
105*b1cdbd2cSJim Jagielski		<xsl:copy/>
106*b1cdbd2cSJim Jagielski	</xsl:template>
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski    <!-- suppress all merge instructions -->
109*b1cdbd2cSJim Jagielski	<xsl:template match = "@oor:op" mode="locale"/>
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski    <!-- suppress all module markers -->
112*b1cdbd2cSJim Jagielski	<xsl:template match = "@install:module" mode="locale"/>
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski<!-- locale independent data -->
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski    <!-- handle template references      -->
117*b1cdbd2cSJim Jagielski	<xsl:template name="copy-resolve-template">
118*b1cdbd2cSJim Jagielski		<xsl:param name = "node-type"/>
119*b1cdbd2cSJim Jagielski		<xsl:param name = "schema-type"/>
120*b1cdbd2cSJim Jagielski		<xsl:param name = "component-schema"/>
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski        <xsl:choose>
123*b1cdbd2cSJim Jagielski            <xsl:when test="$schema-type='node-ref'">
124*b1cdbd2cSJim Jagielski                <xsl:apply-templates select=".">
125*b1cdbd2cSJim Jagielski                    <xsl:with-param name="context" select="$component-schema/templates/*[@oor:name = $node-type]"/>
126*b1cdbd2cSJim Jagielski                    <xsl:with-param name="component-schema" select="$component-schema"/>
127*b1cdbd2cSJim Jagielski                </xsl:apply-templates>
128*b1cdbd2cSJim Jagielski            </xsl:when>
129*b1cdbd2cSJim Jagielski            <xsl:when test="$schema-type='set'">
130*b1cdbd2cSJim Jagielski                <xsl:copy>
131*b1cdbd2cSJim Jagielski                    <xsl:apply-templates select = "@*" />
132*b1cdbd2cSJim Jagielski                    <xsl:for-each select="node|prop">
133*b1cdbd2cSJim Jagielski                        <xsl:apply-templates select=".">
134*b1cdbd2cSJim Jagielski                            <xsl:with-param name="context" select="$component-schema/templates/*[@oor:name = $node-type]"/>
135*b1cdbd2cSJim Jagielski                            <xsl:with-param name="component-schema" select="$component-schema"/>
136*b1cdbd2cSJim Jagielski                        </xsl:apply-templates>
137*b1cdbd2cSJim Jagielski                    </xsl:for-each>
138*b1cdbd2cSJim Jagielski                </xsl:copy>
139*b1cdbd2cSJim Jagielski            </xsl:when>
140*b1cdbd2cSJim Jagielski            <xsl:otherwise>
141*b1cdbd2cSJim Jagielski                <xsl:message terminate="yes">ERROR: The schema element for a <xsl:value-of select="$schema-type"/>
142*b1cdbd2cSJim Jagielski                                                should not have a node-type.
143*b1cdbd2cSJim Jagielski                </xsl:message>
144*b1cdbd2cSJim Jagielski            </xsl:otherwise>
145*b1cdbd2cSJim Jagielski        </xsl:choose>
146*b1cdbd2cSJim Jagielski    </xsl:template>
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski	<xsl:template name="copy-node">
149*b1cdbd2cSJim Jagielski		<xsl:param name = "context"/>
150*b1cdbd2cSJim Jagielski		<xsl:param name = "component-schema"/>
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski        <xsl:choose>
153*b1cdbd2cSJim Jagielski            <!-- look for matching templates in other components -->
154*b1cdbd2cSJim Jagielski            <xsl:when test="$context/@oor:node-type and $context/@oor:component">
155*b1cdbd2cSJim Jagielski                <xsl:variable name="fileURL">
156*b1cdbd2cSJim Jagielski                    <xsl:call-template name="composeFileURL">
157*b1cdbd2cSJim Jagielski                        <xsl:with-param name="component-schema" select="$component-schema"/>
158*b1cdbd2cSJim Jagielski                        <xsl:with-param name="componentName"><xsl:value-of select="$context/@oor:component"/></xsl:with-param>
159*b1cdbd2cSJim Jagielski                    </xsl:call-template>
160*b1cdbd2cSJim Jagielski                </xsl:variable>
161*b1cdbd2cSJim Jagielski                <xsl:call-template name="copy-resolve-template">
162*b1cdbd2cSJim Jagielski                    <xsl:with-param name="node-type" select="$context/@oor:node-type"/>
163*b1cdbd2cSJim Jagielski                    <xsl:with-param name="schema-type" select="local-name($context)"/>
164*b1cdbd2cSJim Jagielski                    <xsl:with-param name="component-schema" select="document($fileURL)/oor:component-schema"/>
165*b1cdbd2cSJim Jagielski                </xsl:call-template>
166*b1cdbd2cSJim Jagielski            </xsl:when>
167*b1cdbd2cSJim Jagielski            <!-- look for matching templates within the same component -->
168*b1cdbd2cSJim Jagielski            <xsl:when test="$context/@oor:node-type">
169*b1cdbd2cSJim Jagielski                <xsl:call-template name="copy-resolve-template">
170*b1cdbd2cSJim Jagielski                    <xsl:with-param name="node-type" select="$context/@oor:node-type"/>
171*b1cdbd2cSJim Jagielski                    <xsl:with-param name="schema-type" select="local-name($context)"/>
172*b1cdbd2cSJim Jagielski                    <xsl:with-param name="component-schema" select="$component-schema"/>
173*b1cdbd2cSJim Jagielski                </xsl:call-template>
174*b1cdbd2cSJim Jagielski            </xsl:when>
175*b1cdbd2cSJim Jagielski            <xsl:otherwise>
176*b1cdbd2cSJim Jagielski                <xsl:copy>
177*b1cdbd2cSJim Jagielski                    <xsl:apply-templates select = "@*" />
178*b1cdbd2cSJim Jagielski                    <xsl:for-each select="node|prop">
179*b1cdbd2cSJim Jagielski                        <xsl:apply-templates select=".">
180*b1cdbd2cSJim Jagielski                            <xsl:with-param name="component-schema" select="$component-schema"/>
181*b1cdbd2cSJim Jagielski                            <xsl:with-param name="context" select="$context/*[@oor:name = current()/@oor:name]"/>
182*b1cdbd2cSJim Jagielski                        </xsl:apply-templates>
183*b1cdbd2cSJim Jagielski                    </xsl:for-each>
184*b1cdbd2cSJim Jagielski                </xsl:copy>
185*b1cdbd2cSJim Jagielski            </xsl:otherwise>
186*b1cdbd2cSJim Jagielski        </xsl:choose>
187*b1cdbd2cSJim Jagielski	</xsl:template>
188*b1cdbd2cSJim Jagielski
189*b1cdbd2cSJim Jagielski	<xsl:template match="node">
190*b1cdbd2cSJim Jagielski		<xsl:param name = "context"/>
191*b1cdbd2cSJim Jagielski		<xsl:param name = "component-schema"/>
192*b1cdbd2cSJim Jagielski
193*b1cdbd2cSJim Jagielski        <xsl:variable name="applicable-values" select="descendant::value[not (@xml:lang) or (@xml:lang=$fallback-locale) or (@install:module=$module)]"/>
194*b1cdbd2cSJim Jagielski        <xsl:variable name="substantive-nodes" select="descendant-or-self::*[(@oor:finalized='true') or (@oor:mandatory='true') or (@oor:op!='modify')]"/>
195*b1cdbd2cSJim Jagielski
196*b1cdbd2cSJim Jagielski        <xsl:choose>
197*b1cdbd2cSJim Jagielski            <!-- go ahead, if we are in the active module -->
198*b1cdbd2cSJim Jagielski            <xsl:when test="ancestor-or-self::*/@install:module=$module">
199*b1cdbd2cSJim Jagielski                <xsl:if test="$applicable-values | $substantive-nodes">
200*b1cdbd2cSJim Jagielski                    <xsl:call-template name="copy-node">
201*b1cdbd2cSJim Jagielski                        <xsl:with-param name="component-schema" select="$component-schema"/>
202*b1cdbd2cSJim Jagielski                        <xsl:with-param name="context" select="$context"/>
203*b1cdbd2cSJim Jagielski                    </xsl:call-template>
204*b1cdbd2cSJim Jagielski                </xsl:if>
205*b1cdbd2cSJim Jagielski			</xsl:when>
206*b1cdbd2cSJim Jagielski            <!-- strip data from wrong module -->
207*b1cdbd2cSJim Jagielski            <xsl:when test="ancestor-or-self::*/@install:module"/>
208*b1cdbd2cSJim Jagielski            <!-- looking for module -->
209*b1cdbd2cSJim Jagielski            <xsl:when test="$module">
210*b1cdbd2cSJim Jagielski                <xsl:if test="($applicable-values | $substantive-nodes)/ancestor-or-self::*/@install:module=$module">
211*b1cdbd2cSJim Jagielski                    <xsl:call-template name="copy-node">
212*b1cdbd2cSJim Jagielski                        <xsl:with-param name="component-schema" select="$component-schema"/>
213*b1cdbd2cSJim Jagielski                        <xsl:with-param name="context" select="$context"/>
214*b1cdbd2cSJim Jagielski                    </xsl:call-template>
215*b1cdbd2cSJim Jagielski                </xsl:if>
216*b1cdbd2cSJim Jagielski			</xsl:when>
217*b1cdbd2cSJim Jagielski            <!-- copying non-module data -->
218*b1cdbd2cSJim Jagielski            <xsl:otherwise>
219*b1cdbd2cSJim Jagielski                <xsl:if test="($applicable-values | $substantive-nodes)[not(ancestor-or-self::*/@install:module)]">
220*b1cdbd2cSJim Jagielski                    <xsl:call-template name="copy-node">
221*b1cdbd2cSJim Jagielski                        <xsl:with-param name="component-schema" select="$component-schema"/>
222*b1cdbd2cSJim Jagielski                        <xsl:with-param name="context" select="$context"/>
223*b1cdbd2cSJim Jagielski                    </xsl:call-template>
224*b1cdbd2cSJim Jagielski                </xsl:if>
225*b1cdbd2cSJim Jagielski            </xsl:otherwise>
226*b1cdbd2cSJim Jagielski		</xsl:choose>
227*b1cdbd2cSJim Jagielski	</xsl:template>
228*b1cdbd2cSJim Jagielski
229*b1cdbd2cSJim Jagielski	<xsl:template match="prop">
230*b1cdbd2cSJim Jagielski		<xsl:param name = "context"/>
231*b1cdbd2cSJim Jagielski		<xsl:choose>
232*b1cdbd2cSJim Jagielski            <xsl:when test="$module and not((ancestor-or-self::* | child::value)/@install:module=$module)"/>
233*b1cdbd2cSJim Jagielski            <xsl:when test="not($module) and ancestor-or-self::*/@install:module"/>
234*b1cdbd2cSJim Jagielski			<xsl:when test="not ($context) or @oor:finalized='true' or @oor:op!='modify'">
235*b1cdbd2cSJim Jagielski				<xsl:copy>
236*b1cdbd2cSJim Jagielski					<xsl:apply-templates select = "@*"/>
237*b1cdbd2cSJim Jagielski					<xsl:apply-templates select = "value"/>
238*b1cdbd2cSJim Jagielski				</xsl:copy>
239*b1cdbd2cSJim Jagielski			</xsl:when>
240*b1cdbd2cSJim Jagielski			<xsl:when test="value[not (@xml:lang) or @install:module]">
241*b1cdbd2cSJim Jagielski                <xsl:if test="value[not(@install:module) or @install:module=$module]">
242*b1cdbd2cSJim Jagielski                    <!-- copy locale independent values only, if the values differ -->
243*b1cdbd2cSJim Jagielski                    <xsl:variable name="isRedundant">
244*b1cdbd2cSJim Jagielski                        <xsl:call-template name="isRedundant">
245*b1cdbd2cSJim Jagielski                            <xsl:with-param name="schemaval"  select="$context/value"/>
246*b1cdbd2cSJim Jagielski                            <xsl:with-param name="dataval" select="value[(not(@xml:lang) or @install:module) and (not(@install:module) or @install:module=$module)]"/>
247*b1cdbd2cSJim Jagielski                        </xsl:call-template>
248*b1cdbd2cSJim Jagielski                    </xsl:variable>
249*b1cdbd2cSJim Jagielski                    <xsl:if test="$isRedundant ='false'">
250*b1cdbd2cSJim Jagielski                        <xsl:copy>
251*b1cdbd2cSJim Jagielski                            <xsl:apply-templates select = "@*"/>
252*b1cdbd2cSJim Jagielski                            <xsl:apply-templates select = "value"/>
253*b1cdbd2cSJim Jagielski                        </xsl:copy>
254*b1cdbd2cSJim Jagielski                        </xsl:if>
255*b1cdbd2cSJim Jagielski				</xsl:if>
256*b1cdbd2cSJim Jagielski			</xsl:when>
257*b1cdbd2cSJim Jagielski			<xsl:otherwise>
258*b1cdbd2cSJim Jagielski				<xsl:copy>
259*b1cdbd2cSJim Jagielski					<xsl:apply-templates select = "@*"/>
260*b1cdbd2cSJim Jagielski					<xsl:apply-templates select = "value" mode="fallback-locale"/>
261*b1cdbd2cSJim Jagielski				</xsl:copy>
262*b1cdbd2cSJim Jagielski			</xsl:otherwise>
263*b1cdbd2cSJim Jagielski		</xsl:choose>
264*b1cdbd2cSJim Jagielski	</xsl:template>
265*b1cdbd2cSJim Jagielski
266*b1cdbd2cSJim Jagielski	<xsl:template match="value">
267*b1cdbd2cSJim Jagielski		<xsl:choose>
268*b1cdbd2cSJim Jagielski            <xsl:when test="@xml:lang and not(@install:module)"/>
269*b1cdbd2cSJim Jagielski            <xsl:when test="$module and not(ancestor-or-self::*/@install:module=$module)"/>
270*b1cdbd2cSJim Jagielski            <xsl:when test="not($module) and ancestor-or-self::*/@install:module"/>
271*b1cdbd2cSJim Jagielski            <xsl:otherwise>
272*b1cdbd2cSJim Jagielski                <xsl:copy>
273*b1cdbd2cSJim Jagielski                    <xsl:apply-templates select = "@*"/>
274*b1cdbd2cSJim Jagielski                    <xsl:copy-of select="node()"/>
275*b1cdbd2cSJim Jagielski                </xsl:copy>
276*b1cdbd2cSJim Jagielski            </xsl:otherwise>
277*b1cdbd2cSJim Jagielski		</xsl:choose>
278*b1cdbd2cSJim Jagielski	</xsl:template>
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski	<xsl:template match="value" mode="fallback-locale">
281*b1cdbd2cSJim Jagielski		<xsl:if test="@xml:lang=$fallback-locale and not(@install:module)">
282*b1cdbd2cSJim Jagielski            <xsl:copy>
283*b1cdbd2cSJim Jagielski                <xsl:apply-templates select = "@*"/>
284*b1cdbd2cSJim Jagielski                <xsl:copy-of select="node()"/>
285*b1cdbd2cSJim Jagielski            </xsl:copy>
286*b1cdbd2cSJim Jagielski		</xsl:if>
287*b1cdbd2cSJim Jagielski	</xsl:template>
288*b1cdbd2cSJim Jagielski
289*b1cdbd2cSJim Jagielski	<xsl:template match = "@*">
290*b1cdbd2cSJim Jagielski		<xsl:copy/>
291*b1cdbd2cSJim Jagielski	</xsl:template>
292*b1cdbd2cSJim Jagielski
293*b1cdbd2cSJim Jagielski    <!-- suppress all merge instructions, that are out-of-module -->
294*b1cdbd2cSJim Jagielski	<xsl:template match = "@oor:op">
295*b1cdbd2cSJim Jagielski        <xsl:if test="not($module) or ancestor::*/@install:module">
296*b1cdbd2cSJim Jagielski            <xsl:copy/>
297*b1cdbd2cSJim Jagielski		</xsl:if>
298*b1cdbd2cSJim Jagielski	</xsl:template>
299*b1cdbd2cSJim Jagielski
300*b1cdbd2cSJim Jagielski    <!-- suppress all module markers -->
301*b1cdbd2cSJim Jagielski	<xsl:template match = "@install:module"/>
302*b1cdbd2cSJim Jagielski
303*b1cdbd2cSJim Jagielski<!-- compares two values -->
304*b1cdbd2cSJim Jagielski	<xsl:template name="isRedundant">
305*b1cdbd2cSJim Jagielski		<xsl:param name = "schemaval"/>
306*b1cdbd2cSJim Jagielski		<xsl:param name = "dataval"/>
307*b1cdbd2cSJim Jagielski		<xsl:choose>
308*b1cdbd2cSJim Jagielski			<xsl:when test="not ($dataval)">
309*b1cdbd2cSJim Jagielski				<xsl:value-of select="true()"/>
310*b1cdbd2cSJim Jagielski			</xsl:when>
311*b1cdbd2cSJim Jagielski            <xsl:when test="$dataval/@oor:external">
312*b1cdbd2cSJim Jagielski                <xsl:value-of select="false()"/>
313*b1cdbd2cSJim Jagielski            </xsl:when>
314*b1cdbd2cSJim Jagielski			<xsl:when test="not ($schemaval)">
315*b1cdbd2cSJim Jagielski				<xsl:choose>
316*b1cdbd2cSJim Jagielski					<xsl:when test="$dataval/@xsi:nil='true'">
317*b1cdbd2cSJim Jagielski						<xsl:value-of select="true()"/>
318*b1cdbd2cSJim Jagielski					</xsl:when>
319*b1cdbd2cSJim Jagielski					<xsl:otherwise>
320*b1cdbd2cSJim Jagielski						<xsl:value-of select="false()"/>
321*b1cdbd2cSJim Jagielski					</xsl:otherwise>
322*b1cdbd2cSJim Jagielski				</xsl:choose>
323*b1cdbd2cSJim Jagielski			</xsl:when>
324*b1cdbd2cSJim Jagielski			<xsl:when test="$schemaval != $dataval">
325*b1cdbd2cSJim Jagielski				<xsl:value-of select="false()"/>
326*b1cdbd2cSJim Jagielski			</xsl:when>
327*b1cdbd2cSJim Jagielski			<xsl:otherwise>
328*b1cdbd2cSJim Jagielski				<xsl:value-of select="true()"/>
329*b1cdbd2cSJim Jagielski			</xsl:otherwise>
330*b1cdbd2cSJim Jagielski		</xsl:choose>
331*b1cdbd2cSJim Jagielski	</xsl:template>
332*b1cdbd2cSJim Jagielski
333*b1cdbd2cSJim Jagielski	<xsl:template name="composeFileURL">
334*b1cdbd2cSJim Jagielski		<xsl:param name="componentName"/>
335*b1cdbd2cSJim Jagielski		<xsl:variable name="fileURL">
336*b1cdbd2cSJim Jagielski			<xsl:value-of select="$schemaRootURL"/>/<xsl:value-of select="translate($componentName,'.','/')"/><xsl:text>.xcs</xsl:text>
337*b1cdbd2cSJim Jagielski		</xsl:variable>
338*b1cdbd2cSJim Jagielski		<xsl:value-of select="$fileURL"/>
339*b1cdbd2cSJim Jagielski	</xsl:template>
340*b1cdbd2cSJim Jagielski
341*b1cdbd2cSJim Jagielski</xsl:transform>
342