summaryrefslogtreecommitdiffstats
path: root/solenv/bin/packregistry.xslt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 16:51:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 16:51:28 +0000
commit940b4d1848e8c70ab7642901a68594e8016caffc (patch)
treeeb72f344ee6c3d9b80a7ecc079ea79e9fba8676d /solenv/bin/packregistry.xslt
parentInitial commit. (diff)
downloadlibreoffice-upstream.tar.xz
libreoffice-upstream.zip
Adding upstream version 1:7.0.4.upstream/1%7.0.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'solenv/bin/packregistry.xslt')
-rw-r--r--solenv/bin/packregistry.xslt80
1 files changed, 80 insertions, 0 deletions
diff --git a/solenv/bin/packregistry.xslt b/solenv/bin/packregistry.xslt
new file mode 100644
index 000000000..9079bbc6b
--- /dev/null
+++ b/solenv/bin/packregistry.xslt
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:oor="http://openoffice.org/2001/registry">
+ <xsl:param name="prefix"/>
+ <xsl:strip-space elements="*"/>
+ <xsl:preserve-space elements="value it"/>
+ <!-- TODO: strip space from "value" elements that have "it" children -->
+ <xsl:template match="/">
+ <oor:data xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <xsl:copy-of select="list/dependency"/>
+<!--
+ <xsl:copy-of select="document(list/filename)/oor:component-schema"/>
+ <xsl:copy-of select="document(list/filename)/oor:component-data"/>
+
+ instead of the below for-each would only issue warnings, not errors, for
+ non-existing or otherwise bad input files; it is important that the input
+ filename list is already sorted in an order suitable for the configmgr
+ (e.g., xcs files preceding xcu files).
+-->
+ <xsl:for-each select="list/filename">
+ <xsl:variable name="doc" select="document(concat($prefix, .))"/>
+ <xsl:choose>
+ <xsl:when test="count($doc/oor:component-schema) = 1">
+ <xsl:apply-templates select="$doc/oor:component-schema"/>
+ </xsl:when>
+ <xsl:when test="count($doc/oor:component-data) = 1">
+ <xsl:apply-templates select="$doc/oor:component-data"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>cannot process </xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </oor:data>
+ </xsl:template>
+ <xsl:template
+ match="oor:component-schema|oor:component-data|templates|component|group|
+ set|node-ref|prop|item|value|it|unicode|node">
+ <xsl:copy copy-namespaces="no">
+ <!-- prune oor:component-data xmlns:install="..." namespaces (would only
+ work in XSLT 2.0, however) -->
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match="value[it]">
+ <xsl:copy copy-namespaces="no">
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates select="*"/>
+ <!-- ignore text elements (which must be whitespace only) -->
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match="info|import|uses|constraints"/>
+ <!-- TODO: no longer strip elements when they are eventually read by
+ configmgr implementation -->
+ <xsl:template match="@*">
+ <xsl:copy/>
+ </xsl:template>
+</xsl:stylesheet>