2015-10-01 27 views
0

我有一個遍歷這個XML並選擇「InterestingData」節點中的元素的XSLT。爲什麼xmlLinq屬性會終止XSL轉換?

的變換,因爲這個屬性這是在「DontNeed2」節點的故障:xmlns:xmlLinq="clr-namespace:System.Xml.Linq;assembly=System.Xml"

所以,如果我完全刪除該屬性,轉換成功。但是,我不控制該XML的生成,因此我需要能夠處理它。 XSL甚至沒有選擇的節點中的這個屬性如何能夠終止轉換,我該如何解決這個問題?

SomeTech.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Root xmlns=""> 
    <DontNeed1> 
    <Item name="one" /> 
    <Item name="two" /> 
    <Item name="three" /> 
    </DontNeed1> 
    <DontNeed2> 
    <transporters:SomeWebServiceTransportActivity xmlns:transporters="clr-namespace:SomeTech.DataFeed.Activities.Transporters;assembly=SomeTech.DataFeed" xmlns:out="clr-namespace:SomeTech.DataFeed;assembly=SomeTech.DataFeed" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:compModel="clr-namespace:SomeTech.DataFeed.ComponentModel;assembly=SomeTech.DataFeed" xmlns:channel="clr-namespace:SomeTech.DataFeed.Engine.Channel;assembly=SomeTech.DataFeed" xmlns:engine="clr-namespace:SomeTech.DataFeed.Engine;assembly=SomeTech.DataFeed" xmlns:kernel="clr-namespace:SomeTech.Kernel.Channel;assembly=SomeTech.Kernel" xmlns="clr-namespace:SomeTech.DataFeed;assembly=SomeTech.DataFeed" xmlns:schema="clr-namespace:System.Xml.Schema;assembly=System.Xml" xmlns:xmlLinq="clr-namespace:System.Xml.Linq;assembly=System.Xml" xmlns:domain="clr-namespace:SomeTech.Common.Domain;assembly=SomeTech.Common" xmlns:s="clr-namespace:System;assembly=mscorlib" x:Key="transportActivity" SearchType="ReportId" RecordsPerFile="100" UseWindowsAuth="false" IsWindowsAuthSpecific="false" TempFileOnErrorAction="DoNothing" TempFileOnErrorRenameString=""> 
    </transporters:SomeWebServiceTransportActivity> 
    </DontNeed2> 
    <InterestingData> 
    <Items> 
     <Item>Apple</Item> 
    </Items> 
    <Items> 
     <Item>Orange</Item> 
    </Items> 
    </InterestingData> 
</Root> 

SomeTech.xsl

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <html> 
     <body> 
     <table border="1"> 
      <tr bgcolor="#cccccc"> 
      <th style="text-align:left">Item</th> 
      </tr> 
      <xsl:for-each select="Root/InterestingData/Items"> 
      <tr> 
       <td> 
       <xsl:value-of select="Item"/> 
       </td> 
      </tr> 
      </xsl:for-each> 
     </table> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

SomeTech.html

<html> 
<head> 
    <title>Demo XSLT</title> 
    <script> 
     function loadXMLDoc(filename) { 
      if (window.ActiveXObject) { 
       xhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
      else { 
       xhttp = new XMLHttpRequest(); 
      } 
      xhttp.open("GET", filename, false); 
      try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 
      xhttp.send(""); 
      return xhttp.responseXML; 
     } 


     function displayResult() { 
      xml = loadXMLDoc("SomeTech.xml"); 
      xsl = loadXMLDoc("SomeTech.xsl"); 

      // code for IE 
      if (window.ActiveXObject || xhttp.responseType == "msxml-document") { 
       ex = xml.transformNode(xsl); 
       document.getElementById("example").innerHTML = ex; 
      } 
       // code for Chrome, 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); 
      } 
     } 
    </script> 
</head> 
<body onload="displayResult()"> 
    <div id="example" /> 
</body> 
</html> 
+3

請發佈足夠的代碼(XML + XSLT)以使我們能夠重現此問題。 –

+0

爲再現問題添加代碼。僅供參考這是使用VS 2013,Windows 7,IE 9。 –

+0

我沒有看到任何問題與您的XSLT代碼。 –

回答

0

這似乎是一個問題/錯誤只在IE9。