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>
請發佈足夠的代碼(XML + XSLT)以使我們能夠重現此問題。 –
爲再現問題添加代碼。僅供參考這是使用VS 2013,Windows 7,IE 9。 –
我沒有看到任何問題與您的XSLT代碼。 –