gpt4 book ai didi

c# - 检查扩展对象是否在 xslt 模板中定义

转载 作者:行者123 更新时间:2023-11-30 15:36:20 25 4
gpt4 key购买 nike

我在我的 .NET (C#) 项目中使用 XSLT。我想知道如果在(添加到)XsltArgumentList 中定义了扩展对象,是否可以检查 XSLT 模板内部。

XSLT 命名空间声明

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:info="urn:info">

C#代码

public string Render(XElement xml, IInfo info) {    
XsltArgumentList arguments = new XsltArgumentList();
if(info != null)
arguments.AddExtensionObject("urn:info", info);

var writterSettings = GetWritterSettings(); //omitted details just for simplicity
var xslt = CreateXslCompiledTransform(); //omitted details just for simplicity

StringBuilder sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb, writerSettings))
{
using (var itemReader = xml.CreateReader())
{
xslt.Transform(itemReader, xsltArguments, writer);
}
}
return sb.ToString();
}

在 XSLT 模板中,当扩展对象不为空时,我想对它做一些事情,而当它为空时,我想做一些其他事情。 XSLT 是否有一些特殊的标记或语法来完成此操作,或者根本不可能?

最佳答案

XSLT 提供函数 element-available()function-available() 来检查特定的扩展元素/函数是否可用,所以试试像function-available()/p>

<xsl:choose>
<xsl:when test="function-available('info:myFunction')">
myFunction is available
</xsl:when>
<xsl:otherwise>
myFunction is not available
</xsl:otherwise>
</xsl:choose>

关于c# - 检查扩展对象是否在 xslt 模板中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13823209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com