Проблема со сценариями XSLT в C # ошибка «Не удается найти функцию с двумя аргументами с именем {urn: my-scripts} Expressions ()» - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь использовать некоторые функции C # в форме проверки XSLT, но она начала показывать некоторые ошибки, и я не смог понять, почему.

Я использую XSLT, который прекрасно работает следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
              xmlns:regexp="http://exslt.org/regular-expressions"
              xmlns:xalan="http://xml.apache.org/xalan" 
              xmlns:xs="http://www.w3.org/2001/XMLSchema"  
              xmlns:date="http://exslt.org/dates-and-times"
              xmlns:func="http://exslt.org/functions"
              xmlns:dp="http://www.datapower.com/extensions" 
              exclude-result-prefixes="xalan gemfunc regexp date func" 
              version="1.0">

но когда я помещаю код, который объединяет msxsl:script, который я нашел здесь https://docs.microsoft.com/en-us/dotnet/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script, он не работает:

<?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
              xmlns:regexp="http://exslt.org/regular-expressions"
              xmlns:xalan="http://xml.apache.org/xalan" 
              xmlns:xs="http://www.w3.org/2001/XMLSchema"              
              xmlns:date="http://exslt.org/dates-and-times"
              xmlns:func="http://exslt.org/functions"
              xmlns:dp="http://www.datapower.com/extensions" 
              exclude-result-prefixes="xalan gemfunc regexp date func" 

              xmlns:msxsl="urn:schemas-microsoft-com:xslt"      
              xmlns:user="http://www.tempuri.org/User"
              version="1.0">

и возвращает следующую ошибку:

Не удается найти функцию с двумя аргументами с именем {http://www.tempuri.org/User}Expressions()

Это код C #, который я использую

<msxsl:script implements-prefix="user" language="CSharp">
    <![CDATA[
        public bool Expressions(string data, string pattern) {return  Regex.IsMatch(data, pattern); }

        public int issueDate_Days(string data, string type){
          var fechaEmision=Convert.ToDateTime(data);
          var fecha=DateTime.Now;
          int dif=0;

          if(type=="seven")
            dif=Convert.ToInt32(Math.Round((fecha - fechaEmision).TotalDays));
          else
            dif =Convert.ToInt32(Math.Ceiling((fechaEmision - fecha).TotalDays));
          return  dif;
        }

        public int invoicePeriod(string stardDate, string endDate){
          var inicio=Convert.ToDateTime(stardDate);
          var fin=Convert.ToDateTime(endDate);
          var dif=(fin<inicio)?1:0;
          return  dif;
        }

        public int issueDate_Valid(string data){
          DateTime temp;
          int res =1;
          if(DateTime.TryParse(data, out temp))
          res=0;
          return res;
        }   
    ]]>
</msxsl:script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...