我想从 xml 中删除空属性,还需要根据特定元素对其进行拆分。我创建了两个 xsl 用于分别拆分和删除空属性,它工作正常。但我需要将这两个 xsl 组合起来,以便在删除空属性后,需要根据特定元素拆分 xml。
删除属性 xslt:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*[not(normalize-space(.))]">
<xsl:if test="descendant::*/@*[not(normalize-space(.))]">
<xsl:copy />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
拆分 XSLT:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*" >
<xsl:result-document href="ure.xml">
<xsl:element name="Employee" >
<xsl:attribute name="xsi:schemaLocation">sample.xsd</xsl:attribute>
<xsl:copy-of select="/Employee/*"/>
</xsl:element>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
输入 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Enroll>
<Department id="x1" name="">
<members id ="" name="lio">ds</members>
</Department>
<Employee>
<address id="s1" no=""></address>
<domain id="" no="34"></domain>
</Employee>
</Enroll>
output_one xml:
<Department id="x1" name="">
<members id ="" name="lio">ds</members>
</Department>
输出+_two Xml:
<Employee>
<address id="s1" ></address>
<domain no="34"></domain>
</Employee>
输出应该是两个单独的 xml 文件,其中应该有拆分的 xml 部分,并且需要删除空属性。
我已经尝试使用 Apply-templates、include 和 xml 管道,但我无法让它工作。
任何帮助将不胜感激。