首页 > 解决方案 > XPTY0004:不允许将多个项目的序列作为 string-length() 的第一个参数

问题描述

我在使用 XSLT 模板将 XML 转换为对象时遇到了这个问题

XPTY0004:不允许将多个项目的序列作为 string-length() 的第一个参数

我的 XML

  <?xml version="1.0" encoding="UTF-8"?>
<NS1:Envelope xmlns:NS1="http://www.w3.org/2003/05/soap-envelope">
   <NS1:Header>
      <NS2:metadata xmlns:NS2="http://www.test.net/services/metadata/v2.0">
         <serviceId>id</serviceId>
         <serviceVersion>1.0</serviceVersion>
         <locale>pt_BR</locale>
         <internals/>
      </NS2:metadata>
   </NS1:Header>
   <NS1:Body>
      <NS1:Fault>
         <NS1:Code>
            <soapenv:Value xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">soapenv:Receiver</soapenv:Value>
            <NS1:Subcode>
               <NS1:Value>UNKNOWN_ERROR</NS1:Value>
            </NS1:Subcode>
         </NS1:Code>
         <NS1:Reason>
            <NS1:Text xml:lang="en">tranformData. tente novamente</NS1:Text>
         </NS1:Reason>
         <NS1:Detail>
            <NS3:errors xmlns:NS3="http://www.test.net/services/errors/v1.0">
               <error>
                  <code>UNKNOWN_ERROR</code>
                  <message>unknow error.</message>
                  <type>GENERIC</type>
                  <source>tranformData</source>
               </error>
               <error>
                <code>UNKNOWN_ERROR</code>
                  <message>unknow error.</message>
                  <type>GENERIC</type>
                  <source>tranformData</source>
               </error>
            </NS3:errors>
         </NS1:Detail>
     </NS1:Fault>
   </NS1:Body>
</NS1:Envelope>

我的 XSLT 线:

<xsl:if test="string-length(//source/text()) + string-length(//code/text()) > 0">

请帮我。

标签: xmlxslt

解决方案


推荐阅读