| <?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> |