2010-12-08 50 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(); 
       }