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