xref: /aoo4110/main/solenv/bin/packregistry.xslt (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?>
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:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
26*b1cdbd2cSJim Jagielski   xmlns:oor="http://openoffice.org/2001/registry">
27*b1cdbd2cSJim Jagielski  <xsl:param name="prefix"/>
28*b1cdbd2cSJim Jagielski  <xsl:strip-space elements="*"/>
29*b1cdbd2cSJim Jagielski  <xsl:preserve-space elements="value it"/>
30*b1cdbd2cSJim Jagielski    <!-- TODO: strip space from "value" elements that have "it" children -->
31*b1cdbd2cSJim Jagielski  <xsl:template match="/">
32*b1cdbd2cSJim Jagielski    <oor:data xmlns:xs="http://www.w3.org/2001/XMLSchema"
33*b1cdbd2cSJim Jagielski       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
34*b1cdbd2cSJim Jagielski      <xsl:copy-of select="list/dependency"/>
35*b1cdbd2cSJim Jagielski<!--
36*b1cdbd2cSJim Jagielski      <xsl:copy-of select="document(list/filename)/oor:component-schema"/>
37*b1cdbd2cSJim Jagielski      <xsl:copy-of select="document(list/filename)/oor:component-data"/>
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski      instead of the below for-each would only issue warnings, not errors, for
40*b1cdbd2cSJim Jagielski      non-existing or otherwise bad input files; it is important that the input
41*b1cdbd2cSJim Jagielski      filename list is already sorted in an order suitable for the configmgr
42*b1cdbd2cSJim Jagielski      (e.g., xcs files preceeding xcu files).
43*b1cdbd2cSJim Jagielski-->
44*b1cdbd2cSJim Jagielski      <xsl:for-each select="list/filename">
45*b1cdbd2cSJim Jagielski        <xsl:variable name="doc" select="document(concat($prefix, .))"/>
46*b1cdbd2cSJim Jagielski        <xsl:choose>
47*b1cdbd2cSJim Jagielski          <xsl:when test="count($doc/oor:component-schema) = 1">
48*b1cdbd2cSJim Jagielski            <xsl:apply-templates select="$doc/oor:component-schema"/>
49*b1cdbd2cSJim Jagielski          </xsl:when>
50*b1cdbd2cSJim Jagielski          <xsl:when test="count($doc/oor:component-data) = 1">
51*b1cdbd2cSJim Jagielski            <xsl:apply-templates select="$doc/oor:component-data"/>
52*b1cdbd2cSJim Jagielski          </xsl:when>
53*b1cdbd2cSJim Jagielski          <xsl:otherwise>
54*b1cdbd2cSJim Jagielski            <xsl:message terminate="yes">
55*b1cdbd2cSJim Jagielski              <xsl:text>cannot process </xsl:text>
56*b1cdbd2cSJim Jagielski              <xsl:value-of select="."/>
57*b1cdbd2cSJim Jagielski            </xsl:message>
58*b1cdbd2cSJim Jagielski          </xsl:otherwise>
59*b1cdbd2cSJim Jagielski        </xsl:choose>
60*b1cdbd2cSJim Jagielski      </xsl:for-each>
61*b1cdbd2cSJim Jagielski    </oor:data>
62*b1cdbd2cSJim Jagielski  </xsl:template>
63*b1cdbd2cSJim Jagielski  <xsl:template
64*b1cdbd2cSJim Jagielski     match="oor:component-schema|oor:component-data|templates|component|group|
65*b1cdbd2cSJim Jagielski            set|node-ref|prop|item|value|it|unicode|node">
66*b1cdbd2cSJim Jagielski    <xsl:copy copy-namespaces="no">
67*b1cdbd2cSJim Jagielski      <!-- prune oor:component-data xmlns:install="..." namespaces (would only
68*b1cdbd2cSJim Jagielski           work in XSLT 2.0, however) -->
69*b1cdbd2cSJim Jagielski      <xsl:apply-templates select="@*"/>
70*b1cdbd2cSJim Jagielski      <xsl:apply-templates/>
71*b1cdbd2cSJim Jagielski    </xsl:copy>
72*b1cdbd2cSJim Jagielski  </xsl:template>
73*b1cdbd2cSJim Jagielski  <xsl:template match="value[it]">
74*b1cdbd2cSJim Jagielski    <xsl:copy copy-namespaces="no">
75*b1cdbd2cSJim Jagielski      <xsl:apply-templates select="@*"/>
76*b1cdbd2cSJim Jagielski      <xsl:apply-templates select="*"/>
77*b1cdbd2cSJim Jagielski        <!-- ignore text elements (which must be whitespace only) -->
78*b1cdbd2cSJim Jagielski    </xsl:copy>
79*b1cdbd2cSJim Jagielski  </xsl:template>
80*b1cdbd2cSJim Jagielski  <xsl:template match="info|import|uses|constraints"/>
81*b1cdbd2cSJim Jagielski    <!-- TODO: no longer strip elements when they are eventually read by
82*b1cdbd2cSJim Jagielski         configmgr implementation -->
83*b1cdbd2cSJim Jagielski  <xsl:template match="@*">
84*b1cdbd2cSJim Jagielski    <xsl:copy/>
85*b1cdbd2cSJim Jagielski  </xsl:template>
86*b1cdbd2cSJim Jagielski</xsl:stylesheet>
87