似乎网上还有其他帖子提出同样的问题,但要么他们没有完全解决问题,要么我遗漏了某些内容(很可能是后者)。
为XAMLX服务定义内容关联的XPath查询时,我对命名空间前缀的来源感到困惑。例如,在查询“sm:body()/ xg0:Id”中,“sm”和“xg0”来自何处。我假设这些是在某处指定的,但我不知道在哪里。如果我理解正确,生成查询与消息合同一起使用时不起作用。在某种程度上,我同意这一点。如果我将“xg0”的前缀更改为“tempuri”,我可以在基本情况下使用它,但不是在所有情况下都可以。是否有文档可以准确解释此查询的工作原理?
答案 0 :(得分: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>