浏览器中的XML转换不起作用
我开发了一个XML样式表,用于在VS2010中转换一个相对简单的XML文件。在VS中运行XSLT调试时,它会在新窗口中呈现预期的输出 因此,我在源XML中添加了指向XSLT文件的链接:浏览器中的XML转换不起作用,xml,visual-studio-2010,xslt,Xml,Visual Studio 2010,Xslt,我开发了一个XML样式表,用于在VS2010中转换一个相对简单的XML文件。在VS中运行XSLT调试时,它会在新窗口中呈现预期的输出 因此,我在源XML中添加了指向XSLT文件的链接: <?xml-stylesheet type="text/xsl" href="ABC.xslt"?> 但是,当我在浏览器中查看此文件时,不会得到转换后的结果。在IE9中,Firefox和Chrome XSLT(可能以修改过的形式)将被第三方用来生成最终的XML,因此它不是必需的,它可以工作——但
<?xml-stylesheet type="text/xsl" href="ABC.xslt"?>
但是,当我在浏览器中查看此文件时,不会得到转换后的结果。在IE9中,Firefox和Chrome
XSLT(可能以修改过的形式)将被第三方用来生成最终的XML,因此它不是必需的,它可以工作——但它是一个有用的工具,可以证明从out数据库(生成起始XML)输出的结果,一旦转换,将看起来像最终的XML
XML示例:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="abc.xslt"?>
<afterTreatmentSystemRequest>
<afterTreatmentSystem>
<ID>93073010005597</ID>
<shipmentDate>20120330</shipmentDate>
<technicalApprovalDate>20120330</technicalApprovalDate>
</afterTreatmentSystem>
<executionSettingsDate>2012-03-30T14:17:26</executionSettingsDate>
</afterTreatmentSystemRequest>
93073010005597
20120330
20120330
2012-03-30T14:17:26
XSLT:
更新:
我重新插入了XML和XSL段,确保它们与VS2010中运行良好的版本相匹配。按照Dimitre关于使用IE开发者工具(F12)的建议,我可以看到一些转换已经发生,但我仍然缺少executionSettings元素
预期产出:
<?xml version="1.0" encoding="utf-8"?>
<nsmajorassemblyai:storeAfterTreatmentSystemRequest category="MajorAssemblyAdapter" delta="true" version="2.10" xmlns:nsmajorassemblyai="http://majorassembly.mysite.com/ai">
<requestHeader userId="d2vswen" />
<afterTreatmentSystem delta="true" dataCardAvailable="true" id="93073010005597">
<activeCustomer addressCity="" addressCountry="" addressStreet="" addressZip="" customerNumber="" firstname="" name="" />
<activeProductDate shipmentDate="20120330" technicalApprovalDate="20120331" />
</afterTreatmentSystem>
<executionSettings causation="plant" issueThreshold="err" systemPriority="2" unresolvedConflictAction="notifyAdmin" userId="d2vswen" date="2012-03-30T14:17:26" />
</nsmajorassemblyai:storeAfterTreatmentSystemRequest>
使用IE9可以正确地执行转换,但不会显示结果,因为它不是HTML
要验证这一点,请单击F12并展开HTML选项卡中的元素。在修复示例时删除了上一个答案 它适用于我,命令行上使用saxon6,浏览器中使用IE(9)
这将在VS中引发错误——XML不是格式良好的XML文档。请说对。如果仍然得到相同的结果,请确保文件
abc.xslt
与XML文件位于同一目录中。XML格式正确,并且两个文件都位于同一文件夹中。CJM:正如我在回答中所说,转换执行正常,可以验证这一点。浏览器不显示结果,因为它不是html。转换没有执行正常(请参阅对您的问题和OP的评论),但不幸的是,在我可以进行更新之前,您已经做出了响应!;)F12是我忽略的一个有用的技巧!它显示一些转换已经发生,但不是全部-executionSettings元素丢失。对不起,David-为了检查我的OP,我把它弄得更糟!我添加了错误的XSLT-现在已更正。好的,我将从我发布的XML/XSLT中重新构建XML,看看是否可以得到类似的结果。我不太确定我最初做错了什么,但我在VS中开发的XML+XSLT组合在IE9中的转换是正确的。我不记得曾经更改过VS版本,所以我只能假设在创建IE9测试版本时,最初复制的内容不正确。
<?xml version="1.0" encoding="utf-8"?>
<nsmajorassemblyai:storeAfterTreatmentSystemRequest category="MajorAssemblyAdapter" delta="true" version="2.10" xmlns:nsmajorassemblyai="http://majorassembly.mysite.com/ai">
<requestHeader userId="d2vswen" />
<afterTreatmentSystem delta="true" dataCardAvailable="true" id="93073010005597">
<activeCustomer addressCity="" addressCountry="" addressStreet="" addressZip="" customerNumber="" firstname="" name="" />
<activeProductDate shipmentDate="20120330" technicalApprovalDate="20120331" />
</afterTreatmentSystem>
<executionSettings causation="plant" issueThreshold="err" systemPriority="2" unresolvedConflictAction="notifyAdmin" userId="d2vswen" date="2012-03-30T14:17:26" />
</nsmajorassemblyai:storeAfterTreatmentSystemRequest>