簡體   English   中英

如何在 CDATA 塊中聲明然后使用變量?

[英]How do I declare then use a variable within a CDATA block?

我有一個 XSL/XML/JS 文件。 它是由不再在這里工作的人寫的,我通常只處理 SQL,所以我不知道如何實現我需要做的事情

我試圖將一些變量添加到現有 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; 
      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM