这是我的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()很多其他方法,但是没有运气,我不能只检索节点名称,任何帮助都会做,谢谢!
您可以尝试使用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>
元素只是因为在我用于测试的在线XSLT处理器中,根元素缺席时会出现错误。通常,设置<xsl:output>
足以输出非xml结果:XSLT:转换为非xml内容?