Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 无法将元素与名称空间连接_Xml_Xpath_Xslt 2.0 - Fatal编程技术网

Xml 无法将元素与名称空间连接

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

以下XPath表达式的行为非常奇怪:

//*[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>