XSLT选择特定节点,并从Java参数化它
我有这样的XML结构XSLT选择特定节点,并从Java参数化它,java,xml,xslt,xslt-2.0,Java,Xml,Xslt,Xslt 2.0,我有这样的XML结构 <?xml version="1.0" encoding="UTF-8"?> <Package> <PackageHeader>yadda yadda </PackageHeader> <PackageBody> <Element1>foo</Element1> <Element2>bar</
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<PackageHeader>yadda yadda </PackageHeader>
<PackageBody>
<Element1>foo</Element1>
<Element2>bar</Element2>
<ElementN>xyz</ElementN>
</PackageBody>
雅达雅达
福
酒吧
xyz
我有一个需要消除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>
我通过一个简单的JavaXSL转换程序来运行它。转换后的XML只有原始XML减去Element1和Element2后的elevrything。我尝试了很多方法从Java程序中传递参数,以参数化哪些节点应该被删除,但到目前为止没有成功。任何帮助都将不胜感激。听起来像是XSLT 3的任务,具有静态参数和阴影属性,最好与Saxon s9api()一起使用,如果使用的是处理器:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="3.0">
<xsl:param name="element-to-be-removed" static="yes" as="xs:string" select="'Element2'"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template _match="{$element-to-be-removed}"/>
</xsl:stylesheet>
听起来像是XSLT 3的任务,带有静态参数和阴影属性,如果使用的是Saxon s9api(),则最好与之配合使用:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="3.0">
<xsl:param name="element-to-be-removed" static="yes" as="xs:string" select="'Element2'"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template _match="{$element-to-be-removed}"/>
</xsl:stylesheet>
听起来像是XSLT 3的任务,具有静态参数和阴影属性,如果使用的是处理器,则最好与Saxon s9api配合使用。听起来像是XSLT 3的任务,具有静态参数和阴影属性,如果使用的是处理器,则最好与Saxon s9api配合使用。