我有两个 XMLs Main XML 和 List XML。我正在尝试根据两个 XML 上是否存在相同的节点值来过滤主 XML。
尝试了以下 xslt 但未按预期工作。
Xslt
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" omit-xml-declaration="yes" media-type="string"/>
<xsl:param name="cc" select="'list.xml'"/>
<xsl:variable name="list" select="document($cc)/rows/row" />
<xsl:template match="/lines">
<xsl:copy>
<xsl:apply-templates select="/line[substring-before(/account/seg1, ' ')=$list/cc]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我正在使用 Cast Iron 工具执行此过滤器,它支持 XSLT 2.0
主要的xml:
<lines>
<line>
<account>
<seg1>0101 Expense</seg1>
</account>
</line>
<line>
<account>
<seg1>0102 Capital</seg1>
</account>
</line>
<line>
<account>
<seg1>0103 Expense</seg1>
</account>
</line>
<line>
<account>
<seg1>0104 Expense</seg1>
</account>
</line>
<line>
<account>
<seg1>0105 Espense</seg1>
</account>
</line>
</lines>
清单 XML:
<rows>
<row>
<cc>0101</cc>
</row>
<row>
<cc>0103</cc>
</row>
<row>
<cc>0105</cc>
</row>
<row>
<cc>0107</cc>
</row>
<row>
<cc>0109</cc>
</row>
</rows>
输出 XML:
<lines>
<line>
<account>
<seg1>0101</seg1>
</account>
</line>
<line>
<account>
<seg1>0103</seg1>
</account>
</line>
<line>
<account>
<seg1>0105</seg1>
</account>
</line>
</lines>
EDIT1:添加了我正在尝试的 xslt 和 inputxml 更多信息。