我已经编写了代码来检查merge1.xml中的Document_Name__c是否存在于merge2.xml中的Document_Name__c中,然后我需要所有数据,仅根据预期的输出来自merge1。 XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:param name="XMLMerge2" select="document('merge2.xml')"/>
<xsl:template match="objects">
<objects>
<xsl:for-each select="Alert__c">
<xsl:variable name="Email_from_merge1" select="Document_Name__c"/>
<xsl:if
test="
exists($XMLMerge2/objects/Data__c[Document_Name__c
!= $Email_from_merge1])">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:if>
</xsl:for-each>
</objects>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
输入:Merge1.xml ---在XSL中,我在这里使用。
<objects>
<Alert__c>
<Document_Name__c>aaa.pdf</Document_Name__c>
<CreatedDate>2017-06-19T10:55:56.000Z</CreatedDate>
</Alert__c>
<Alert__c>
<Document_Name__c>file 1.pdf</Document_Name__c>
<CreatedDate>2017-06-15T10:55:56.000Z</CreatedDate>
</Alert__c>
<Alert__c>
<Document_Name__c>VICS_810_004010_US.pdf</Document_Name__c>
<CreatedDate>2017-06-09T06:24:56.000Z</CreatedDate>
</Alert__c>
<Alert__c>
<Document_Name__c>aa.csv</Document_Name__c>
<CreatedDate>2017-06-14T14:26:49.000Z</CreatedDate>
</Alert__c>
</objects>
Merge2.xml ---在XSL中,我在这里使用。
<?xml version="1.0" encoding="UTF-8"?>
<objects>
<Data__c>
<Id>a0J3900000KNEqTEAX</Id>
<Document_Name__c>VICS_810_004010_US.pdf</Document_Name__c>
</Data__c>
<Data__c>
<Id>a0J3900000KNEqVEAX</Id>
<Document_Name__c>file 1.pdf</Document_Name__c>
</Data__c>
</objects>
预期产出:
<objects>
<Alert__c>
<Document_Name__c>aaa.pdf</Document_Name__c>
<CreatedDate>2017-06-19T10:55:56.000Z</CreatedDate>
</Alert__c>
<Alert__c>
<Document_Name__c>aa.csv</Document_Name__c>
<CreatedDate>2017-06-14T14:26:49.000Z</CreatedDate>
</Alert__c>
</objects>
答案 0 :(得分:0)
我认为这是你逻辑上的一个基本缺陷。您想测试D2是否不包含等于X的元素,但实际上您正在测试D2是否包含不等于X的元素。这些是不同的条件。你想要
test="!exists(X=Y)"
不
test="exists(X!=Y)"