我正在尝试在XSLT验证表单中使用一些C#函数,但是它开始显示一些错误,我无法弄清原因。
我使用的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">
但是当我放置在这里https://docs.microsoft.com/en-us/dotnet/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script找到的集成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()的2参数函数
这是我正在使用的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>