[英]How to do XML to XSLT transformation with C# function
我有動態生成的XML,如下所示,它在運行時填充節點值。
<?xml version="1.0" encoding="utf-8" ?>
<master>
<child>
<category1>Category1_A</category1>
<category2>Category2_B </category2>
</child>
</master>
我的web.config中有一個類別代碼配置密鑰,如下所示
<add key="Code" value="A1|A2" />
以下是我的XSLT,我知道這格式不正確。
我在此XSLT中遇到以下問題
我知道這有點令人困惑,但是我知道這很有趣。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts"> <msxsl:script language="C#" implements-prefix="user"> <![CDATA[ public string checkCategory (string category1,string category2) { if( (category1=="Category1_A" && category1==" Category2_B") && ConfigurationManager.AppSetting["Code"].contains("A1")) return true; else return false; } ]]> </msxsl:script> <xsl:template match="master"> <child> <circumference> <xsl:value-of select="user: checkCategory (category1,category2)"/> <!--if method return false then : return Sorry, Combination doesn't match.”--> </circumference> </child> </xsl:template> </xsl:stylesheet>
如果您的函數返回true
和false
,則應將返回類型更改為bool
:
<msxsl:script language="C#" implements-prefix="user">
<![CDATA[
public bool checkCategory (string category1,string category2)
{
if( (category1=="Category1_A" && category2==" Category2_B") && ConfigurationManager.AppSetting["Code"].contains("A1"))
return true;
else
return false;
}
]]>
</msxsl:script>
您可以稍微簡化一下代碼:
<msxsl:script language="C#" implements-prefix="user">
<![CDATA[
public bool checkCategory (string category1,string category2)
{
return (category1 == "Category1_A" && category2 == "Category2_B") &&
ConfigurationManager.AppSetting["Code"].contains("A1");
}
]]>
</msxsl:script>
然后,您可以使用xsl:if
:
<xsl:template match="master">
<child>
<circumference>
<xsl:if select="user:checkCategory(category1,category2)">
<xsl:text>Sorry, Combination doesn’t match.</xsl:text>
</xsl:if>
</circumference>
</child>
</xsl:template>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.