3

似乎网络上还有其他帖子提出了同样的问题,但要么他们没有完全解决这个问题,要么我遗漏了一些东西(很可能是后者)。

在为 XAMLX 服务的内容关联定义 XPath 查询时,我对命名空间前缀的来源感到困惑。例如,在查询“sm:body()/xg0:Id”中,“sm”和“xg0”是从哪里来的。我假设这些是在某处指定的,但我不确定在哪里。如果我理解正确,则与消息合同一起使用时生成查询不起作用。在某种程度上,我同意这一点。如果我将“xg0”的前缀更改为“tempuri”,我可以让它在基本情况下工作,但不是在所有情况下。是否有文档准确解释此查询的工作原理?

4

1 回答 1

3

命名空间前缀存储在 XAMLX 文件中。不幸的是,没有显示值的 UI,您必须开始挖掘 XAMLX 源。请参阅下面的 XPathMessageQuery.Namespaces 部分,其中xgSc定义为http://tempuri.org/

<Receive x:Name="__ReferenceID0" CanCreateInstance="True" DisplayName="ReceiveRequest" sap:VirtualizedContainerService.HintSize="255,86" OperationName="GetData" ServiceContractName="p:IService">
  <Receive.CorrelationInitializers>
    <RequestReplyCorrelationInitializer CorrelationHandle="[handle]" />
    <QueryCorrelationInitializer>
      <XPathMessageQuery x:Key="key1">
        <XPathMessageQuery.Namespaces>
          <ssx:XPathMessageContextMarkup>
            <x:String x:Key="xgSc">http://tempuri.org/</x:String>
          </ssx:XPathMessageContextMarkup>
        </XPathMessageQuery.Namespaces>sm:body()/xgSc:GetData/xgSc:orderId</XPathMessageQuery>
    </QueryCorrelationInitializer>
  </Receive.CorrelationInitializers>
  <ReceiveParametersContent>
    <p1:OutArgument x:TypeArguments="x:String" x:Key="orderId" />
  </ReceiveParametersContent>
</Receive>
于 2013-01-15T20:00:49.210 回答