Etiket: XSLT

Biztalk 2009 : SQLBinding – 3 – Mapping

Eylül 14th, 2009

Merhabalar,
Bir önceki makalemizde projemizin schemalarını oluşturmuştuk, Bu makelede ise bu schemaları kullanarak basit bir map yaratacağız. Bu map iki farklı şema arasında verilerin ne şekilde taşınacağını belirlememizi sağlar. Bu sayede normal kodlamada kullanılan XSLT ve XML gibi ciddi yoğun ve gereksiz işlerden, sürükle bırak yaparak kurtulmuş oluyoruz. Oluşturacağımız bu map dosyasını not defteriyle açarsanız neden bahsettiğimi daha iyi anlayabilirsiniz :)

  1. Sağ Click -> Add -> New Item yolunu izleyerek aşağıdaki gibi bir map oluşturuyoruz. Ben bu dosyanın ismine Transform_File2SQLRequest dedim. Dilerseniz değiştirebilirsiniz.
  2. orc11

  3. Açılan btm dosyasında, Open Source Schema ya tıklayarak Schemas -> sqlbinding.data yı yani kaynak olan dosya şemamızı seçiyoruz.
  4. Open Destination Schema linkinden ise Schemas -> SQLBinding_InsertTableOperation_dbo_sqlbinding seçilir. Karşımıza bu işlemin türünü soran bir ekran gelecektir. Buradan biz sql e kayıt aktarımı yapacağımız için(gidiş yönlü bir transfer olucak) Insert işlemi seçilir.
  5. Şemalara belirlendikten sonra temel olarak sürükle bırak ile node ları birbirine bağlıyoruz. Bir tek ID bilgili otomatik üretileceği için boş bırakılacak. Mapin olması gereken son halini aşağıdaki resimden görebilirsiniz.
  6. orc13

Bir sonraki makale; Orchestration :)

Tags: , , , , , , ,
Posted in BizTalk | No Comments »

XSLT Choose

Ağustos 14th, 2009

XSLT Choose Operation :

<xsl:variable name="value" select="//*[local-name()='NODE_NAME']" />
<xsl:choose>
<xsl:when test =  "$value= 'abcxyz'" >
"//*[local-name()='NODE_NAME']" is equal to abcxyz
</xsl:when>
<xsl:otherwise>
Not Equal
</xsl:otherwise>
</xsl:choose>

Tags: ,
Posted in Yazılım | 2 Comments »

XML ve XSLT Dosyalarını İşleyerek Ekrana HTML Çıktısı Veren ASPX Sayfası

Nisan 15th, 2009

evet mutlaka vardır bu konularla ilgilenen, hoş ben daha benden başkasını görüp duymadım ama neyse :)

Elinizde source olarak XML var, XSLT kullanarak bu dosyayı işlemek istiyorsunuz. Bazı yardımcı programlarla testlerini, çıktılarını, görünümü görüp hoşunuza gidiyor. Fakat internete koymak bunu biraz daha kastırıcı :)

Şöyleki aşağıdaki gibi bir default.aspx dosyanızın olması gerekli. Ne anlattığımı anlamayanlar, birer adet XML, XSLT ve ASPX dosyası ile db’ siz ek sayfasız muazzam portaller hazırlayabileceklerini düşünsünler. Şimdilik ilk aşama olarak ASPX dosyamızın kaynak kodlarını veriyorum. Fazla zor bir yapısı yok, o yüzden fazla açıklama gereği görmedim, isteyen olursa seve seve anlatabilirim.

Not düşeyim bir de : Buradaki XML ve XSLT dosyaları temel olarak Biztalk Server ın temelidir, yani microsoft bu teknolojiler üzerine BTS’ i geliştirmiştir.

Default.ASPX

using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.IO;
using System.Reflection;
using System.Collections;
using System.Text.RegularExpressions;
using System.Web;
using System.Text;
using System;

public partial class _Default : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        DoPage();
    }

    protected void DoPage()
    {
        // XML Dokümanını yükle
        XmlDocument defaultXml = new XmlDocument();
        defaultXml.Load(HttpContext.Current.Server.MapPath("~/Data/Source.XML"));

        XslCompiledTransform myXsl = new XslCompiledTransform(true);

        XsltSettings xSet = new XsltSettings(true, true);

        xSet = XsltSettings.TrustedXslt;
        xSet.EnableDocumentFunction = true;
        xSet.EnableScript = true;

        XmlUrlResolver xr = new XmlUrlResolver();

        System.Security.PermissionSet ps = new System.Security.PermissionSet(System.Security.Permissions.PermissionState.Unrestricted);
        XmlSecureResolver sr = new XmlSecureResolver(new XmlUrlResolver(), ps);

        myXsl.Load(HttpContext.Current.Server.MapPath("~/Data/Proses.XSLT"), xSet, sr);

        XsltArgumentList myXslArguments = new XsltArgumentList();

        string n="";

        for (int i = 0; Request.QueryString.Count < i-1; ++i)
        {
            n = Request.QueryString.Keys[i].ToString();
            if (!(n.Equals("")))
                myXslArguments.AddParam(n, "", Request.QueryString.GetValues(i).ToString());
            n = "";
        }

        myXslArguments.AddParam("currentUser", "", User.Identity.Name);
        myXslArguments.AddParam("Browser", "", Request.Browser.Browser);

        System.IO.MemoryStream mIO = new MemoryStream();
        byte[] result;
        string myt;

        mIO.SetLength(0);
        myXsl.Transform(defaultXml, myXslArguments, mIO);

        result = mIO.ToArray();
        myt = Encoding.UTF8.GetString(result, 3, result.Length - 3);

        Response.Buffer = true;
        Response.ClearContent();
        Response.ClearHeaders();
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "text/html";
        Context.Response.Write(myt);

        mIO.Close();

        Response.End();
    }

}

Tags: , , , , , ,
Posted in Yazılım | No Comments »