如何声明然后在CDATA块中使用变量?

问题描述

我有一个XSL / XML / JS文件。它是由一个不再在这里工作的人写的,我通常只处理sql,所以Im对于如何实现我需要做的事情不知所措

我正在尝试在现有CDATA块内的文件添加一些变量。然后,我在函数中使用变量。但是,我尝试了以下内容及其变体,但是在应用程序(Dynamics AX)中不断出现语法错误。我在此处声明变量或如何使用变量的地方明显做错了吗?这些是我所做的唯一更改,没有这些更改,就不会有语法或任何其他问题/错误

<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:mxm="http://schemas.microsoft.com/dynamics/2008/01/documents/MxmservInterfaceOutboundaif" 
xmlns:data="http://www.example.com/data" exclude-result-prefixes="xs xsi xsl">
  <xsl:output method="text" encoding="UTF-8" indent="no" />   
    <msxsl:script language="JScript" implements-prefix="data">    
        <![CDATA[      
      
      //Minor Repairs email address  
      var MinorsEmail = xxx@domain.com
      //Service Dept email address
      var ServiceEmail = yyy@domain.com
      //Major Repairs email address  
      var MajorsEmail = zzz@domain.com

//Select appropriate email to use
function EmailFrom(fault)
      {
        var type = fault.substr(0,2);
        if (type == "MI")
          {
          var ret = MinorsEmail;
          }
        else 
          {
          var ret = concat(ServiceEmail,"; ",MajorsEmail);
          }
        return ret; 
      }

编辑:在变量值周围添加引号已解决了部分问题。现在的问题是CONCAT不能按预期运行。我现在收到以下错误

Variable concat has not been declared

解决方法

感谢@Martin Honnen,答案是在变量值中添加引号,并使用+代替CONCAT:

<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:mxm="http://schemas.microsoft.com/dynamics/2008/01/documents/MxmServInterfaceOutboundAif" 
xmlns:data="http://www.example.com/data" exclude-result-prefixes="xs xsi xsl">
  <xsl:output method="text" encoding="UTF-8" indent="no" />   
    <msxsl:script language="JScript" implements-prefix="data">    
        <![CDATA[      
      
      //Minor Repairs email address  
      var MinorsEmail = "xxx@domain.com"
      //Service Dept email address
      var ServiceEmail = "yyy@domain.com"
      //Major Repairs email address  
      var MajorsEmail = "zzz@domain.com"

//Select appropriate email to use
function EmailFrom(fault)
      {
        var type = fault.substr(0,2);
        if (type == "MI")
          {
          var ret = MinorsEmail;
          }
        else 
          {
          var ret = ServiceEmail + "; " + MajorsEmail;
          }
        return ret; 
      }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...