XSLT - 多个元素值即将进行单次读取

时间:2015-08-14 00:26:29

标签: xslt

我正在尝试使用xsl以下读取数字元素值。

XML:

<message channel-id="64E523E5-7A27-4343-A62A-AA8FBD24EB59">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <SOAP-ENV:Body>
  <insertResponse>    
     <sys_id>4342e2a24fb142005b0e4fe18110c7f3</sys_id>
     <number>INC0010038</number>
  </insertResponse>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</message>

XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
     <message>
       <send-parameters>
         <agent-parameter>
           <name>IncidentNumber</name>
           <value><xsl:value-of select="message/s:Envelope/s:Body/t:insertResponse/t:number" /></value>
         </agent-parameter>
       </send-parameters>
     </message>
  </xsl:template>
</xsl:stylesheet>

我得到的输出如下。

<?xml version="1.0" encoding="UTF-8"?>
 <message>
   <send-parameters>
      <agent-parameter>
          <name>IncidentNumber</name>
          <value>4342e2a24fb142005b0e4fe18110c7f3
INC0010038</value>
      </agent-parameter>
   </send-parameters>
</message>

value元素从sys-id和数字标签中获取值 4342e2a24fb142005b0e4fe18110c7f3INC0010038 。我想只读取xml中的数字标签。我确信我在这里遗漏了一些非常基本的东西。请帮帮我。

此致 基兰

1 个答案:

答案 0 :(得分:0)

尝试以下内容:

<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" 
                exclude-result-prefixes="env xsl">

  <xsl:template match="/">
    <message>
      <send-parameters>
        <agent-parameter>
          <name>IncidentNumber</name>
          <value>
            <xsl:value-of select="message/env:Envelope/env:Body/insertResponse/number" />
          </value>
        </agent-parameter>
      </send-parameters>
    </message>
  </xsl:template>

</xsl:stylesheet>

正如Micheal所述,您在样式表中缺少名称空间定义。一旦你这样做,你的代码就好了