我有 XML 我需要在 ID 上加入
XML 输入 (93 Mb)
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Partner>
<ID>186561</ID>
</Partner>
...
<root>
XML:模糊匹配.xml (40 Mb)
<?xml version="1.0" standalone="yes"?>
<root>
<Partner>
<ID>186561</ID>
<FUZZYMATCH>71</FUZZYMATCH>
</Partner>
...
<root>
当我使用以下 XSLT 加入这些文件时,速度非常慢。好像每次都打开大文件?!有更好的解决方案吗?还是我做错了什么。我使用 Talend Open Studio 的 XSLT 引擎
XSLT 文件
<!-- ********************************************* -->
<!-- fuzzymatch_joiner.xsl : -->
<!-- ********************************************* -->
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:variable name="vPartners" select="document('file:///c:/temp/fuzzymatched.xml')/root" />
<xsl:template match="root">
<xsl:copy>
<xsl:apply-templates select="Partner"></xsl:apply-templates>
</xsl:copy>
</xsl:template>
<!-- ********************************************* -->
<xsl:template match="Partner">
<xsl:copy>
<xsl:apply-templates select="@*|node()"></xsl:apply-templates>
<xsl:copy-of select="$vPartners/Partner[ID = current()/ID]/FUZZYMATCH"/>
</xsl:copy>
</xsl:template>
<!-- ********************************************* -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- ********************************************* -->
</xsl:stylesheet>