2017-06-19 34 views
-1

我已经编写代码来检查merge1.xml中的Document_Name__c是否存在于merge2.xml中的Document_Name__c中,然后我只需要根据预期输出从merge1中获取所有数据。 XSL:在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

我修正了merge1.xml的格式和期望的输出,但是试图在merge2.xml上做同样的事情表明该文件不是格式良好的XML。因为你提供的数据显然不正确,所以不可能帮助你。 –

+0

现在数据是正确的 – NL1

回答

0

我认为这是你的逻辑基础的缺陷。您想要测试D2是否不包含等于X的元素,但实际上是在测试D2是否包含不等于X的元素。这些是不同的条件。你想

test="!exists(X=Y)" 

test="exists(X!=Y)" 
+0

我试过但没有工作。如果可能,请您提供xsl代码 – NL1

+0

不,我很乐意帮助您找到代码中的错误,但我不提供免费的编码服务。 –

+0

感谢您与test =“!exists(X = Y)”一起工作 – NL1

相关问题