Генерация XSL-блока в C # - PullRequest
1 голос
/ 18 января 2011

Я пытаюсь сгенерировать следующий блок XSL в моем приложении C #.Может кто-нибудь сказать мне, как это сделать?

<XSL-Script xmlns:xsl="http://www.w3.org/......">
  <xsl:value-of select="$VAR">
</XSL-Script>

Я попытался использовать обычный класс C # XML, и он удаляет xsl: из имени тега, потому что считает, что xsl: является пространством имен.И это также не позволяет использовать «$» перед VAR для значения атрибута «select».

Большое спасибо.

1 Ответ

1 голос
/ 18 января 2011

Вот простая программа на C #, которая «генерирует» полную таблицу стилей XSLT , а затем выполняет это преобразование для «сгенерированного» XML-документа и выводит результат преобразования в файл:

using System.IO;
using System.Xml;
using System.Xml.Xsl;

    class testTransform
    {
        static void Main(string[] args)
        {
            string xslt = 
@"<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:variable name='vX' select='1'/>

<xsl:template match='/'>
 <xsl:value-of select='$vX'/>
</xsl:template>
</xsl:stylesheet>";

            string xml = @"<t/>";

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xml);

            XmlDocument xslDoc = new XmlDocument();
            xslDoc.LoadXml(xslt);

            XslCompiledTransform xslTrans = new XslCompiledTransform();

            xslTrans.Load(xslDoc);

            xslTrans.Transform(xmlDoc, null, new StreamWriter("output.txt"));
        }
    }

Когда это приложение создается и выполняется, оно создает файл с именем "output.txt", и его содержимое является ожидаемым, правильным результатом динамически сгенерированного преобразования XSLT :

<?xml version="1.0" encoding="utf-8"?>1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...