.NET (C#) プロジェクトで XSLT を使用しています。拡張オブジェクトが定義された (追加された) 場合、XSLT テンプレート内でチェックできるかどうかを知りたいですXsltArgumentList
。
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 テンプレート内で、null でない場合は拡張オブジェクトで何かを行い、null の場合は別のことをしたいと考えています。これを達成するための XSLT 用の特別なタグまたは構文はありますか、それともまったく不可能ですか?