我动态生成的XML如下所示,它在运行时填充节点值。
<?xml version="1.0" encoding="utf-8" ?>
<master>
<child>
<category1>Category1_A</category1>
<category2>Category2_B </category2>
</child>
</master>
我有一个类别代码配置键在我的web。配置如下
<add key="Code" value="A1|A2" />
下面是我的XSLT &我知道这个格式不太好。
我在这个XSLT中有以下问题
- 我如何通过配置键在下面的功能,因为它不是在XML。
- 如果这个方法返回false,那么我想从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>