【发布时间】:2014-06-17 15:54:47
【问题描述】:
我有两个 XML:-
-
keylist.xml
<?xml version="1.0" encoding="UTF-8"?><jdbcGeneralActivityOutput> <unknownResultset> <row> <column> <name>SRC_SYS_ID</name> <value>10015</value> </column> <column> <name>SRC_SYS_RCRD_ID_VAL</name> <value>3327853</value> </column> </row> <row> <column> <name>SRC_SYS_ID</name> <value>10015</value> </column> <column> <name>SRC_SYS_RCRD_ID_VAL</name> <value>9751818</value> </column> </row> <row> <column> <name>SRC_SYS_ID</name> <value>10015</value> </column> <column> <name>SRC_SYS_RCRD_ID_VAL</name> <value>9883123</value> </column> </row> <row> <column> <name>SRC_SYS_ID</name> <value>10015</value> </column> <column> <name>SRC_SYS_RCRD_ID_VAL</name> <value>9901061</value> </column> </row> </unknownResultset> </jdbcGeneralActivityOutput>
和第二个 XML 2. CurrentRow.xml
<?xml version="1.0" encoding="UTF-8"?>
<row>
<column>
<name>SRC_SYS_ID</name>
<value>10015</value>
</column>
<column>
<name>SRC_SYS_RCRD_ID_VAL</name>
<value>3327853</value>
</column>
<column>
<name>PRTY_STTS_CDV</name>
<value>A</value>
</column>
<column>
<name>PRTY_DSPLY_NM</name>
<value>ALEGRIA BRAZILIAN GRILL</value>
</column>
<column>
<name>ADDR_LN_1_TXT</name>
<value>24449 KATY FRWY SUITE 500</value>
</column>
<column>
<name>ADDR_LN_2_TXT</name>
<value/>
</column>
<column>
<name>ADDR_LN_3_TXT</name>
<value/>
</column>
</row>
我想要做的是找出 keylist.xml 中的完整行(一行中的所有名称值对都应该匹配)是否存在于 currentRow.xml 中。
这是我迄今为止尝试过的......但没有运气。谁能帮帮我
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:param name="currentRow" select="document('C:\Personal\09086559\Desktop\Xmls\currentRow.xml')"/>
<!--<xsl:param name="TargetPrimaryKeys" select="document('C:\Personal\09086559\Desktop\Xmls\temp5.xml')"/>
-->
<xsl:template match="/">
<xsl:variable name="apos">'</xsl:variable>
<xsl:for-each select="jdbcGeneralActivityOutput/unknownResultset/row">
<xsl:for-each select="column">
<xsl:variable name="currentName" select="current()/name"/>
<xsl:variable name="currentValue" select="current()/value"/>
<xsl:for-each select="$currentRow/row/column">
<xsl:if test="current()/name=$currentName and current()/value=$currentValue">Y</xsl:if>
<!--<xsl:value-of select="$currentName"/>
<xsl:value-of select="$currentValue"/>
-->
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
您能否澄清 (a) XSLT 正在处理哪个文档,以及 (b) 预期结果是什么?
-
keylist.xml 由 XSLT 处理,currentRow.xml 作为参数传递,但它是开放的,如果需要,我也可以反转它。上述情况下的预期输出应该只是“Y " 因为 keylist.xml 的第一个
中的列(名称/值)在 currentRow.xml 中也可用。如果没有一个
匹配,那么我期望输出为“N”
-
所以整个输入只有一个全局“是”或“否”结果?
-
是的。只是想找出 keylist.xml 中的任何行是否存在于 currentRow.xml 中