XML via XSLT в Nemerle
От: _nn_ www.nemerleweb.com
Дата: 16.03.07 21:02
Оценка:
А почему бы и нет

Вот код для начала:
using NN.Xml;

module Program
{
  Main() : void
  {
    def f()
    {
       XSLTransform("a.xslt", "a.xml");
    }
  
    f();
  }
}


Это код для демонстрации, тему нужно еще развивать конечно.

На мой вгляд нужная вещь в Nemerle.Xml.
Что скажете ?

Код:
using System.IO;
using System.Xml;

using Nemerle.Compiler;
using Nemerle;

namespace NN.Xml
{
    public macro XSLTransform(xsltPath : string, xmlPath : string)
    {
        def xslt = Xsl.XslCompiledTransform();
        xslt.Load(xsltPath);
        
        def sw = StringWriter();
        xslt.Transform(XPath.XPathDocument(xmlPath.ToString()), null, sw); 
           
        def output = MainParser.ParseExpr(Macros.ImplicitCTX().Env, sw.ToString());
        
        <[ $output ]>;
    }
}


a.xml:
<?xml version="1.0" encoding="utf-8"?>
<a>
  <b>System.Console.WriteLine("Hello World!");</b>
</a>


a.xslt:
<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes"/>
  
<xsl:template match="a/b">
  <xsl:value-of select="text()"/>
</xsl:template>

</xsl:stylesheet>
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.