返回首页

介绍
在这篇文章中,我将讨论有关对定义的XSL验证XML。进入本文之前,它是强制性的,应该有什么是XML的放大器的基本知识;的XSL。
考虑下面的XML作为输入(UserCheck.xml)我们的应用程序:

<?xml version="1.0" encoding="utf-16"?>

<root xmlns:func="urn:actl-xslt">

  <User>

    <UserName>suryaprakash</UserName>

    <Password>password</Password>

  </User>

</root>

这个例子说明以下的业务规则:如果用户名,密码的节点不存在,作为输出生成的XML错误。如果是空的用户名,密码节点,生成XML错误输出。检查用户名,密码,如果存在DB或不放大器;生成XML的成功或输出错误。
将输出如下:如果有任何错误,将被插入到XML文件(result.xml)。
每个错误标记将代表每个ERRORMSG放大器的错误;的errorCode。{C}
让我们进入以下步骤样本:第1步:定义XML第2步:定义为我们的业务上面定义的规则的XSL步骤3:定义功能将呼吁从XSL第4步:实施代码验证XML与XSL如下:从XSL将称为第1步:定义XML
考虑下面的XML作为输入到我们的例子:
<?xml version="1.0" encoding="utf-16"?>

<root xmlns:func="urn:actl-xslt">

  <User>

    <UserName>suryaprakash</UserName>

    <Password>password</Password>

  </User>

</root>
第2步:定义为我们的业务上面定义的规则的XSL
上面的XSL,下面是代码中的注释:代码中的注释#1{的C4}
请注意,我这里添加属性 - XMLNS:FUNC = quot;瓮:ACTL xsltquot的;代码中的注释#2
前缀添加到我的外部方法功能:checkUserExist('用户名','密码')如下:{C5的}代码中的注释#3{5233}
这个标签是用来检查如果username节点的存在与否。代码中的注释#4{C7-}
这个标签是用来检查,如果用户名节点的内容为空或不。步骤3:定义功能将呼吁从XSL
该函数将被调用为它定义的XSL,XSL:价值选择"功能:checkUserExist('用户名','密码')"/ GT;
,而不是对数据库检查用户名,我们正在检查与静态值。如果用户名匹配,返回成功串其他它会返回ErrorStrings。{C8的} 第4步:实施代码验证XML与XSL如下:从XSL将称为
这下面的函数将被调用的主要方法,这个函数声明为XML输入,XSL输入放大器的主要变量,XML作为result.xml输出。
public void CheckUserXslt()

{

    string sourceDoc = @"D:\Surya Prakash\WorkAround\GopalSample\XML\CheckUser.XML";

    string xsltDoc = @"D:\Surya Prakash\WorkAround\GopalSample\XML\CheckUser.xslt";

    string resultDoc = @"D:\Surya Prakash\WorkAround\GopalSample\XML\result.xml";

    XsltArgumentList xsltArguments = null;

    XsltExtension xsltExtension = new XsltExtension();

    xsltArguments = new XsltArgumentList();

    xsltArguments.AddExtensionObject("urn:actl-xslt", xsltExtension);



    XPathDocument myXPathDocument = new XPathDocument(sourceDoc);

    XslTransform myXslTransform = new XslTransform();

    XmlTextWriter writer = new XmlTextWriter(resultDoc, null);

    myXslTransform.Load(xsltDoc);

    myXslTransform.Transform(myXPathDocument, xsltArguments, writer);

    writer.Close();

    StreamReader stream = new StreamReader(resultDoc);

}

最后,通过修改XML输入放大器运行的应用程序;看到在result.xml输出。
快乐编码??希望这有助于!|孟加拉戈帕尔・苏里亚:Susanta578 | |类XsltExtension是不存在净2.0。你能告诉我如何得到这个类

回答

评论会员:游客 时间:2012/02/06
这里是类的执行您可以定义在类XsltExtensioncheckUserExist公共,类XsltExtension{公共的字符串checkUserExist(串UNAME,字符串pWord),{字符串的returnValue=string.Empty;如果(UNAME=="普加西哲"){ 的returnValue="SUCESSSSUC_000"} 其他{ 的returnValue=" 用户名/密码是无效的。 ERR_005";}返回的returnValue; }}希望这可以帮助您......'1111月4日修改
Susanta578
评论会员:游客 时间:2012/02/06
感谢ELP。我试过了。但我得到一个异常,说"无法找到脚本或外部对象,它实现了前缀"功能"。我找不到它的的确切reasaon。可以请你帮我出。我新。注:我有MSXML4.0和MSXML6.0分析器安装在我的机器
Susanta578
评论会员:游客 时间:2012/02/06
我做了它的工作。感谢