Я использую версию .net Saxon-HE.Как использовать функцию XSLT fn: document в Saxon-HE для чтения строки XML?
Я написал код для настройки преобразования XSLT, где исходный XSLT передается извне (не читается из файла во время выполнения).
Вот отрывок из моего кода:
Saxon.Api.Processor processor = new Saxon.Api.Processor();
// Feed the XSLT into Saxon
XmlDocument document = new XmlDocument();
document.LoadXml(xslt);
Saxon.Api.XdmNode input = processor.NewDocumentBuilder().Build(document);
Saxon.Api.XsltCompiler xsltCompiler = processor.NewXsltCompiler();
Saxon.Api.XsltExecutable xsltExecutable = xsltCompiler.Compile(input);
Saxon.Api.XsltTransformer xsltTransformer = xsltExecutable.Load();
// Create The stream that will contain the transformed XML.
MemoryStream transformedXmlStream = new MemoryStream();
xsltTransformer.InputXmlResolver = null;
// Input the XML into the transformer.
xsltTransformer.InitialContextNode = processor.NewDocumentBuilder().Build(inputXml);
// Set up the serializer that will output the result.
Saxon.Api.Serializer dataSerializer = processor.NewSerializer(transformedXmlStream);
// Run the transformation and get the output as a stream.
xsltTransformer.Run(dataSerializer);
Этот код прекрасно работает до сих пор!
Однако у меня возникла проблема с новым требованием. Мне было предложено реализовать некоторые функции, используя функцию document()
, которая требует другого документа XML с собственным BaseURI.
Этот другой документ будет передаваться непосредственно в программу как строка или поток, так же как XSLT и входной XML. Проблема в том, что я в тупике выясняю, как подать в документе саксон, на который будет ссылаться функция document()
.
Как использовать функцию document()
для чтения XML-потока в Saxon XSLT?
связано? http://stackoverflow.com/questions/6422087/xmlresolver-xslt-compiler-error –