XSLT を介して 2 つの 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>
"value" (属性 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>
2 番目のドキュメント内の目的の XPath の選択が機能していないように見えるため、このアプローチは成功しませんでした。
多分あなたはこの質問に対処する方法について考えを持っていますか?
マット