Xml Xpath1.0 local-name()与XSLT中的命名空间
出于某种原因,当我在不使用Xml Xpath1.0 local-name()与XSLT中的命名空间,xml,xslt,xpath,Xml,Xslt,Xpath,出于某种原因,当我在不使用local-name()的情况下使用正确的XPath时,我没有得到任何值 我尝试过的非工作XPath: //mon:ReturnUpdateRequest/urn:Header/urn:DocumentIdentifier/text() soapenv:Envelope/soapenv:Body/mon:ReturnUpdateRequest/urn:Header/urn:DocumentIdentifier/text() 以上两个表达式在XPath工具和XMLspy中
local-name()
的情况下使用正确的XPath时,我没有得到任何值
我尝试过的非工作XPath:
//mon:ReturnUpdateRequest/urn:Header/urn:DocumentIdentifier/text()
soapenv:Envelope/soapenv:Body/mon:ReturnUpdateRequest/urn:Header/urn:DocumentIdentifier/text()
local-name()
输入请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mon="Monsanto:ServiceReturnUpdate" xmlns:urn="urn:monsanto:uscomm:service:header">
<soapenv:Body>
<mon:ReturnUpdateRequest Version="?">
<urn:Header>
<urn:DocumentIdentifier>1013083</urn:DocumentIdentifier>
<urn:DocumentDateTime>2015-06-11T17:46:11.092-03:00</urn:DocumentDateTime>
<urn:From>
<urn:PartnerName>1013083</urn:PartnerName>
<urn:PartnerIdentifier type="SAP_ID">1013083</urn:PartnerIdentifier>
<!--Zero or more repetitions:-->
</urn:From>
<!--Optional:-->
<urn:To>
<urn:PartnerName>1013083</urn:PartnerName>
<urn:PartnerIdentifier type="SAP_ID">0001013083</urn:PartnerIdentifier>
<!--Zero or more repetitions:-->
</urn:To>
<urn:DataSource>APP</urn:DataSource>
<!--Optional:-->
<urn:SoftwareVersion>?</urn:SoftwareVersion>
</urn:Header>
</mon:ReturnUpdateRequest>
</soapenv:Body>
</soapenv:Envelope>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mon="ServiceReturnDetail" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<soapenv:Header/>
<soapenv:Body>
<urn:YSdsaUsseedRetUpdate>
<IIdent>
<!-- <xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='ReturnUpdateRequest']/*[local-name()='Header']/*[local-name()='DocumentIdentifier']"/>-->
<xsl:value-of select="//mon:ReturnUpdateRequest/urn:Header/urn:DocumentIdentifier/text()"/>
</IIdent>
<ISrc>
<!--<xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='ReturnUpdateRequest']/*[local-name()='Header']/*[local-name()='DocumentDateTime']"/>-->
<xsl:value-of select="/soapenv:Envelope/soapenv:Body/mon:ReturnUpdateRequest/urn:Header/urn:DocumentDateTime"/>
</ISrc>
</urn:YSdsaUsseedRetUpdate>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
1013083
2015-06-11T17:46:11.092-03:00
1013083
1013083
1013083
0001013083
应用程序
?
代码片段:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mon="Monsanto:ServiceReturnUpdate" xmlns:urn="urn:monsanto:uscomm:service:header">
<soapenv:Body>
<mon:ReturnUpdateRequest Version="?">
<urn:Header>
<urn:DocumentIdentifier>1013083</urn:DocumentIdentifier>
<urn:DocumentDateTime>2015-06-11T17:46:11.092-03:00</urn:DocumentDateTime>
<urn:From>
<urn:PartnerName>1013083</urn:PartnerName>
<urn:PartnerIdentifier type="SAP_ID">1013083</urn:PartnerIdentifier>
<!--Zero or more repetitions:-->
</urn:From>
<!--Optional:-->
<urn:To>
<urn:PartnerName>1013083</urn:PartnerName>
<urn:PartnerIdentifier type="SAP_ID">0001013083</urn:PartnerIdentifier>
<!--Zero or more repetitions:-->
</urn:To>
<urn:DataSource>APP</urn:DataSource>
<!--Optional:-->
<urn:SoftwareVersion>?</urn:SoftwareVersion>
</urn:Header>
</mon:ReturnUpdateRequest>
</soapenv:Body>
</soapenv:Envelope>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mon="ServiceReturnDetail" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<soapenv:Header/>
<soapenv:Body>
<urn:YSdsaUsseedRetUpdate>
<IIdent>
<!-- <xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='ReturnUpdateRequest']/*[local-name()='Header']/*[local-name()='DocumentIdentifier']"/>-->
<xsl:value-of select="//mon:ReturnUpdateRequest/urn:Header/urn:DocumentIdentifier/text()"/>
</IIdent>
<ISrc>
<!--<xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='ReturnUpdateRequest']/*[local-name()='Header']/*[local-name()='DocumentDateTime']"/>-->
<xsl:value-of select="/soapenv:Envelope/soapenv:Body/mon:ReturnUpdateRequest/urn:Header/urn:DocumentDateTime"/>
</ISrc>
</urn:YSdsaUsseedRetUpdate>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
我哪里做错了
我哪里做错了
在输入XML中,ReturnUpdateRequest
位于一个名称空间中,其URI为“Monsanto:ServiceReturnUpdate”
。您试图将其命名为mon:ReturnUpdateRequest
——但是您的样式表将mon
前缀绑定到一个完全不同的URI:
xmlns:mon="ServiceReturnDetail"
urn
前缀也有类似的问题
下面是一个工作示例:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:mon="Monsanto:ServiceReturnUpdate"
xmlns:hdr="urn:monsanto:uscomm:service:header">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<soapenv:Header/>
<soapenv:Body>
<urn:YSdsaUsseedRetUpdate>
<IIdent>
<xsl:value-of select="//mon:ReturnUpdateRequest/hdr:Header/hdr:DocumentIdentifier"/>
</IIdent>
</urn:YSdsaUsseedRetUpdate>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
注意:由于您希望在输出中使用相同的urn
前缀,但将其绑定到不同的名称空间,因此我使用了不同的前缀来处理输入。这里重要的是URI,而不是前缀本身。我的打字错误。我在编辑时错过了,但是即使应用了更改,它仍然没有给出值。感谢您的解释:)感谢您的解释:)。但我有一个问题,如果名称空间是问题所在,那么它是如何在onlinexpath工具和XMLSpy中工作的呢?我不知道。它不应该起作用,而且在我的任何工具中都不起作用。。