xpath1.0で次のxpath選択を使用しています
<xsl:variable name="id"><xsl:value-of select="./@id" /></xsl:variable>
preceding::exm:messageFlow[@sourceRef = $id]/@targetRef
これは非常にうまく機能し、私が望んでいたことを正確に実行しました。ただし、XSLT2.0をxPath2.0と組み合わせて使用し始めましたが、これは機能しなくなりました(Altova XMLプロセッサを使用)。次のエラーが発生します。
Kann nicht mit Ziel-Typ besetzt werden-Aktuelles Element ist'sid-B3FD7EE5-043 3-4939-A69F-E74B30FDEB1C' vom Typ xs:untypedAtomic、Typ xs:QName erwartet-=
これは大まかに次のように解釈されます。
target-typeに設定できません-現在の要素は、タイプxs:untypedAtomic、タイプxs:QNameが必要な'sid-B3FD7EE5-0433-4939-A69F-E74B30FDEB1C'です-
以前、私はこの選択で同様の問題を抱えていました:
following::exm:*[exm:incoming = $out] | preceding::exm:*[exm:incoming = $out]
これもxpath1.0で機能しましたが、xPath2.0で同様のエラーを返しました。
following::exm:*[exm:incoming/text() = $out] | preceding::exm:*[exm:incoming/text() = $out]
xPath2.0でも機能しました。属性で似たようなことをしてみましたが、うまくいきませんでした
対応するXMLの小さな抜粋:
<messageFlow id="sid-80B618A4-E6BF-4438-AF5D-5111AD308FE6" name="" sourceRef="sid-B3FD7EE5-0433-4939-A69F-E74B30FDEB1C" targetRef="sid-6EB2DB76-CC19-48AD-A073-D37C7489F211"/>
<task completionQuantity="1" id="sid-B3FD7EE5-0433-4939-A69F-E74B30FDEB1C" isForCompensation="false" name="call service" startQuantity="1">
<incoming>sid-2B2BA651-B5BA-4195-9B5B-E6855B1138F4</incoming>
<incoming>sid-DA4B86E8-C3F2-497C-8C0D-218E95CE9FD1</incoming>
<outgoing>sid-008948DE-BA59-4897-AC37-2C3AA63DCD82</outgoing>
</task>