我想通过 XSLT 比较两个 XML 文件。如果文档 1 中特定类型的所有元素都位于文档 2 中的相同 XPath 位置,则应认为比较成功。
考虑
<entry>
<entry1>
<entry2>
<value type="1"/>
</entry2>
</entry1>
</entry>
如文件 1。
被观察的元素是位于 entry/entry1/entry2 的“value”(属性 type=1)。因此,在这个意义上比较
<entry>
<entry0/>
<entry0/>
<entry1>
<entry2>
<value type="1"/>
</entry2>
</entry1>
</entry>
应该被认为是成功的,而
<entry>
<entry1>
<value type="1"/>
</entry1>
</entry>
不成功,因为“值”(属性 type=1)位于 entry/entry1。还有对比
<entry>
<entry1>
<entry2>
<value type="2"/>
</entry2>
</entry1>
</entry>
应该认为不成功,因为 value 的属性是 type=2。
我在 XSLT 中完成这项任务的天真尝试是这样的:
<xsl:template match="value">
<xsl:if test="not(document($doc2)/.[@type=@type])">
<xsl:text>something is missing</xsl:text>
</xsl:if>
</xsl:template>
这种方法并不成功,因为在第二个文档中选择所需的 XPath 似乎不起作用。
也许您对如何解决这个问题有想法?
马特