blob: ce46698928e30b2b43f1ae8249d140d5056991c8 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License v. 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0,
or the Eclipse Distribution License v. 1.0 which is available at
http://www.eclipse.org/org/documents/edl-v10.php.
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-->
<!--
Contributors:
Lukas - initial API and implementation
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="urn:jboss:module:1.5">
<xsl:output method="xml" indent="yes" xalan:indent-amount="4" xmlns:xalan="http://xml.apache.org/xalan" />
<xsl:param name="separator" select="':'"/>
<!-- '$separator' delimited list of resources/jars -->
<xsl:param name="resources" select="''"/>
<xsl:param name="dependencies" select="''"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'resources']">
<xsl:element name="resources">
<xsl:for-each select="*[local-name() = 'resource-root']">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="normalize-space($resources)"/>
<xsl:with-param name="elName" select="'resource-root'"/>
<xsl:with-param name="attrName" select="'path'"/>
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template match="*[local-name() = 'dependencies']">
<xsl:element name="dependencies">
<xsl:for-each select="*[local-name() = 'module']">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="normalize-space($dependencies)"/>
<xsl:with-param name="elName" select="'module'"/>
<xsl:with-param name="attrName" select="'name'"/>
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="text"/>
<xsl:param name="elName"/>
<xsl:param name="attrName"/>
<xsl:param name="s" select="$separator"/>
<xsl:if test="$text != ''">
<xsl:choose>
<xsl:when test="not(contains($text, $s))">
<xsl:if test="not(//*[@path=$text])">
<xsl:element name="{$elName}">
<xsl:attribute name="{$attrName}">
<xsl:value-of select="normalize-space($text)"/>
</xsl:attribute>
<xsl:if test="$elName = 'module'">
<xsl:attribute name="export">true</xsl:attribute>
</xsl:if>
</xsl:element>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="norm" select="normalize-space(substring-before($text, $s))"/>
<xsl:if test="not(//*[@path=$norm])">
<xsl:element name="{$elName}">
<xsl:attribute name="{$attrName}">
<xsl:value-of select="$norm"/>
</xsl:attribute>
<xsl:if test="$elName = 'module'">
<xsl:attribute name="export">true</xsl:attribute>
</xsl:if>
</xsl:element>
</xsl:if>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="normalize-space(substring-after($text, $s))"/>
<xsl:with-param name="elName" select="$elName"/>
<xsl:with-param name="attrName" select="$attrName"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
</xsl:stylesheet>