这是我的xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:end="http://endpoint.ggg.com/">
<soapenv:Header/>
<soapenv:Body>
<end:onlineExpressRemit>
<channelCode>NBPS</channelCode>
</end:onlineExpressRemit>
</soapenv:Body>
</soapenv:Envelope>
这是我的xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:end="http://endpoint.ggg.com/" >
<xsl:template match="/">
<xsl:value-of name="ggg2" select="/soapenv:Envelope/soapenv:Body/*[namespace-uri()]"/>
</xsl:template>
</xsl:stylesheet>
我的预期输出仅显示
onlineExpressRemit
我是xslt的新手,我尝试使用name(),local-name()以及其他方法,但是没有运气,我只能检索节点名,任何帮助都会做,谢谢!
答案 0 :(得分:0)
您可以尝试使用local-name(soapenv:Envelope/soapenv:Body/*)
,例如,以下XSL转换:
<xsl:stylesheet version="1.0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:end="http://endpoint.ggg.com/" >
<xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:element name="root">
<xsl:value-of select="local-name(soapenv:Envelope/soapenv:Body/*)"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
应用于XML示例时,产生以下输出:
<root>onlineExpressRemit</root>
注意:我添加<root>
元素只是因为在我用于测试的online XSLT processor中,当根元素不存在时出错。通常,设置<xsl:output>
足以输出非XML结果:XSLT: Transforming into non-xml content?