我正在尝试使用XSL转换以下WCF调用并将结果放入队列中:
<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">SendMessage</a:Action>
<a:MessageID>urn:uuid:19034ce7-c5ce-4670-ac6c-cfef30c245bd</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
</s:Header>
<s:Body>
<SendMessage xmlns="http://my.custom.namespace/2007/12">
<request xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<to>Test</to>
<from>Test</from>
<message>Test</message>
<service>Test</service>
</request>
</SendMessage>
</s:Body>
</s:Envelope>
我想要做的是转到'to','from','message'和'service'节点,但由于子节点中使用的默认命名空间,我无法选择。有没有人知道我应该用来访问这些节点的正确xPath查询?
谢谢,
迈克答案 0 :(得分:1)
我想做的就是去 'to','from','message'和'service' 节点,但我遇到了麻烦 由于默认选择超出范围 子节点中使用的名称空间。 有谁知道正确的xPath 我应该用来查询 这些节点?
使用强>:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:sb="http://my.custom.namespace/2007/12">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select=
"/*/s:Body/sb:SendMessage/sb:request/*"/>
</xsl:template>
</xsl:stylesheet>
将此转换应用于提供的XML文档:
<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">SendMessage</a:Action>
<a:MessageID>urn:uuid:19034ce7-c5ce-4670-ac6c-cfef30c245bd</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
</s:Header>
<s:Body>
<SendMessage xmlns="http://my.custom.namespace/2007/12">
<request xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<to>Test</to>
<from>Test</from>
<message>Test</message>
<service>Test</service>
</request>
</SendMessage>
</s:Body>
</s:Envelope>
输出所需节点:
<to xmlns="http://my.custom.namespace/2007/12" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">Test</to>
<from xmlns="http://my.custom.namespace/2007/12" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">Test</from>
<message xmlns="http://my.custom.namespace/2007/12" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">Test</message>
<service xmlns="http://my.custom.namespace/2007/12" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">Test</service>