2010-12-08 49 views
0

我有用XSL格式化的XML文件。他们在IE上看起来很棒。在控件上显示XSL格式化的XML

现在我该如何对Flex(而不是AIR)进行相同操作?我想使用像TextArea而不是数据网格。

谢谢。

回答

0

我想我可以使用JavaScript来完成转换。所以我的Flex应用程序将XML和XSL URL传递给JavaScript。 JavaScript执行XML-XSL转换。它应该将转换后的HTML传递回Flex,所以我的Flex应用程序可以弹出一个TextArea(或类似的)来显示它。

我想我正在接近。但目前的问题是,转换后的HTML似乎为空/空。有任何想法吗?

function loadXMLDoc(dname) 
{ 
    if (window.XMLHttpRequest) 
    { 
    xhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
    xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xhttp.open("GET",dname,false); 
    xhttp.send(""); 
    return xhttp.responseXML; 
} 

function displayResult(xmlURL, xslURL) 
{ 
    //prepare xml and xsl 
    xml=loadXMLDoc(xmlURL); 
    xsl=loadXMLDoc(xslURL); 

    //get flash 
    var isIE = navigator.appName.indexOf("Microsoft") != -1; 
    var flashName = "index"; 
    var flashObject = (isIE) ? window[flashName] : document[flashName]; 

    // code for IE 
    if (window.ActiveXObject) 
    { 
    ex=xml.transformNode(xsl); 
    flashObject.GetTransformedHTML(ex); 
    } 
    // code for Mozilla, Firefox, Opera, etc. 
    else if (document.implementation && document.implementation.createDocument) 
    { 
    xsltProcessor=new XSLTProcessor(); 
    xsltProcessor.importStylesheet(xsl); 
    resultDocument = xsltProcessor.transformToFragment(xml,document); 
    document.getElementById("example").appendChild(resultDocument); 
    } 
} 

谢谢。

0

下面是一个示例,并且重要的是:

代替具有一个弹出(与IE例如)显示XSL-施加XML的,我可以在Flex中与这里出现的组分显示它这里的东西是下面的行。 我们应该用toXMLString()功能:

CBSPopup.showNotification("stavka : " + stavka.toXMLString()); 

的其余代码:

if(children.length() > 0){ 
        var idPravila : String = [email protected][0]; 
        for each(var child:XML in children) { 
         var stavka : XML = <entity name="PopustBenzinskeStanice" 
              SCCode={[email protected][0]} 
              SubcompanyName={[email protected][0]} 
              SCCodeMedjusloj={[email protected][0]} 
              IdPravila={idPravila} 
             />; 
         CBSPopup.showNotification("stavka : " + stavka.toXMLString()); 
         _dataprovider.appendChild(stavka); 
        } 
        //if (poslovneJediniceGrid.dataProvider == null) { 
         poslovneJediniceGrid.DataProvider = _dataprovider.entity.(attribute("name") == "PopustBenzinskeStanice"); 
        //} 

        poslovneJediniceGrid.dataProvider.refresh(); 
       }