我有一个需要重新排列的XML:
<?xml version="1.0" encoding="UTF-8"?>
<application id="app_name">
<display-name>app_name</display-name>
<module id="epi-ejb-module">
<ejb>appJar.jar</ejb>
</module>
<module>
<web>
<web-uri>awsi-client.war</web-uri>
<context-root>/awsi-client</context-root>
</web>
</module>
<module>
<web>
<web-uri>other_war.war</web-uri>
<context-root>/some/path</context-root>
</web>
</module>
...
</application>
我需要将awsi-client.war模块移动到最后一个位置,同时保留文档的其余部分。我的主要困难是区分同名的元素。
有什么建议吗?
答案 0 :(得分:0)
这应该适合你:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="1.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="module[web/web-uri = 'awsi-client.war']" />
<xsl:template match="module[last()]">
<xsl:copy-of select="."/>
<xsl:copy-of select="../module[web/web-uri = 'awsi-client.war']"/>
</xsl:template>
</xsl:stylesheet>
它使用标识模板,(1)省略在其原始位置输出包含awsi-client.war
的模块元素,以及(2)在最后一个模块元素上匹配,复制它,然后输出包含{{的模块1}} web-uri。