0

私はこのようなものに見えるxmlを持っています。注: ms-xrm 名前空間は、2 つの AuthenticationPolicy 要素に対して異なる方法でマップされます。

<ms-xrm:AuthenticationPolicy xmlns:ms-xrm="http://schemas.microsoft.com/xrm/2011/Contracts/Services"> 
     <ms-xrm:Authentication>LiveId</ms-xrm:Authentication>
</ms-xrm:AuthenticationPolicy>

<ms-xrm:AuthenticationPolicy xmlns:ms-xrm="http://schemas.microsoft.com/xrm/2012/Contracts/Services"> 
    <ms-xrm:Authentication>OnlineFederation</ms-xrm:Authentication>
</ms-xrm:AuthenticationPolicy>

これらの要素を正確に提供する XPath が必要でした。

//ms-xrm:AuthenticationPolicy

両方の要素を取得します。私は試した

//AuthenticationPolicy[namespace-uri()='http://schemas.microsoft.com/xrm/2012/Contracts/Services']

これにより、空のリストが表示されました。正しい構文は何ですか?

4

1 に答える 1

0

あなたは「正確にこれらの要素」が欲しいと言っていますが、両方の要素を与える式が間違っていることを暗示しているので、おそらく2番目だけが欲しいと思います.

クエリ

//ms-xrm:AuthenticationPolicy

両方の要素を与えるべきではありません。名前空間プレフィックス ms-xrm がどのようにバインドされているかに応じて、どちらか一方を提供する必要があります。XPath では、名前空間プレフィックスは 1 つの名前空間にのみバインドできます。使用している XPath API や、名前空間のプレフィックスがどのようにバインドされるかについては言及していませんが、2 つの名前空間のいずれかを参照し、どの要素が選択されるかを決定する必要があります。XPath で使用される名前空間プレフィックスは、ソース ドキュメントのプレフィックスとは関係ありません (API によってこのように初期化されない限り)。あなたの言っていることが正しい場合、これは XPath プロセッサのバグです。

于 2012-08-22T07:19:37.690 に答える