【发布时间】:2020-06-30 23:04:34
【问题描述】:
我有一个这样的 XML 结构,
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<PackageHeader>yadda yadda </PackageHeader>
<PackageBody>
<Element1>foo</Element1>
<Element2>bar</Element2>
<ElementN>xyz</ElementN>
</PackageBody>
我有一个要求,我需要消除 Element1、Element2 或 ElementN,所以我编写了这个 XSLT,
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()[not(self::Element1)][not(self::Element2)]" />
</xsl:copy>
</xsl:template>
样式表>
我通过一个简单的 Java XSL 转换程序运行它。转换后的 XML 仅具有原始 XML 减去 Element1 和 Element2 的部分。我尝试了很多方法来从 Java 程序传递参数以参数化应该消除哪些节点,但到目前为止还没有运气。任何帮助将不胜感激。
【问题讨论】:
-
听起来像是带有静态参数和阴影属性的 XSLT 3 的任务,如果使用的是处理器,最好与 Saxon s9api 一起使用。