Xml 无法将元素与名称空间连接
以下XPath表达式的行为非常奇怪:Xml 无法将元素与名称空间连接,xml,xpath,xslt-2.0,Xml,Xpath,Xslt 2.0,以下XPath表达式的行为非常奇怪: //*[local-name() = 'Name']/text(), '-' , //*[local-name() = 'Value']/text() 我想从以下SOAP响应中检索此内容: 看起来xslt处理器无法决定选择三个名称/值中的哪一个。Saxon 9可以很好地使用此xpath,并选择名字和第一个值,因此,由于不了解xslt处理器,我猜它是旧版本的Saxon,因为错误代码特定于xpath2,我建议重写xpath: concat(//*[local
//*[local-name() = 'Name']/text(), '-' , //*[local-name() = 'Value']/text()
我想从以下SOAP响应中检索此内容:
看起来xslt处理器无法决定选择三个名称/值中的哪一个。Saxon 9可以很好地使用此xpath,并选择名字和第一个值,因此,由于不了解xslt处理器,我猜它是旧版本的Saxon,因为错误代码特定于xpath2,我建议重写xpath:
concat(//*[local-name() = 'Name']/text()[1], '-' , //*[local-name() = 'Value']/text()[1])
假设您首先通过添加结束标记将XML纠正为格式良好,则此XPath:
concat((//*[local-name() = 'Name'])[1], '-' , (//*[local-name() = 'Value'])[1])
将计算为第一个cam:Name和cam:Value元素的串联字符串值:
'Content Corrections-false'
如果要输出所有值,则有一种方法,如中所示,它具有 以及您的输入示例输出
<example1>Content Corrections-false Formal Corrections-false Complexity-</example1>
如果您在concat函数调用中出错,那么您发布的代码应该显示一个concat函数调用。您需要告诉我们发布的XML示例需要哪一个结果,有三个cam:Name和两个cam:Value元素,路径/*[local Name='Name']/text分别为/*[local Name='Value']/text,而concat的每个参数都需要是单个项。
'Content Corrections-false'
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:cam="http://my.namespace/CaseManagement" exclude-result-prefixes="cam">
<xsl:output indent="yes" />
<xsl:template match="cam:SpecificCase">
<example1>
<xsl:value-of select="cam:SpecificCaseAttribute/concat(cam:Name, '-', cam:Value)"/>
</example1>
</xsl:template>
</xsl:transform>
<example1>Content Corrections-false Formal Corrections-false Complexity-</example1>