繁体   English   中英

当我将XsltParameter传递给XSLT但未在XSLT中定义时会发生什么?

[英]What happens when I pass an XsltParameter to an XSLT but don't define it in the XSLT?

我正在寻找当你执行以下操作时会发生什么:

  1. 创建一个XslCompiledTransform

  2. 创建一个XsltArgumentList

  3. 使用xslArg.AddParam("name", "", "value")将参数添加到列表中

  4. 加载未定义<xsl:param name="name" />的XSLT

这是否会导致错误,或者.NET XSLT引擎是否正常处理?

这在运行时没有问题, XsltArgumentList中提供的参数被XslCompileTransform类的Transfrorm方法忽略。 请注意,加载样式表永远不会成为问题,因为不需要为该方法提供参数绑定。

var xct = new XslCompiledTransform();
 var  xslArg = new  XsltArgumentList();
 xslArg.AddParam("name", "", "foobaz");

 xct.Load(XmlReader.Create(new StringReader(
   @"<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">
        <xsl:template match=""/"">
            result:<xsl:value-of select=""."" />+
        </xsl:template></xsl:stylesheet>")));

  var ms = new MemoryStream();
  xct.Transform(
    XmlReader.Create(new StringReader(@"<root>bar</root>")),
    xslArg,
    ms);

  var s = UTF8Encoding.UTF8.GetString(ms.ToArray());

  s.Dump();

产出量:

 <?xml version="1.0" encoding="utf-8"?>
     result:bar+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM