我开发了一个XML样式表来转换VS2010中相对简单的XML文件。当我在VS中运行XSLT Debugging时,它会在新窗口中呈现预期的输出。
然后我在源XML中添加了一个指向XSLT文件的链接:
<?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>
XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/afterTreatmentSystemRequest">
<nsmajorassemblyai:storeAfterTreatmentSystemRequest category="MajorAssemblyAdapter" delta="true" version="2.10" xmlns:nsmajorassemblyai="http://majorassembly.mysite.com/ai">
<requestHeader userId="d2vswen"/>
<xsl:apply-templates select="afterTreatmentSystem" />
<xsl:apply-templates select="executionSettingsDate" />
</nsmajorassemblyai:storeAfterTreatmentSystemRequest>
</xsl:template>
<xsl:template match="afterTreatmentSystem">
<afterTreatmentSystem delta="true" dataCardAvailable="true">
<xsl:attribute name="id">
<xsl:value-of select="ID"/>
</xsl:attribute>
<activeCustomer addressCity="" addressCountry="" addressStreet="" addressZip="" customerNumber="" firstname="" name=""/>
<activeProductDate>
<xsl:attribute name="shipmentDate">
<xsl:value-of select="shipmentDate"/>
</xsl:attribute>
<xsl:attribute name="technicalApprovalDate">
<xsl:value-of select="technicalApprovalDate"/>
</xsl:attribute>
</activeProductDate>
</afterTreatmentSystem>
</xsl:template>
<xsl:template match="executionSettingsDate">
<executionSettings causation="plant" issueThreshold="err" systemPriority="2" unresolvedConflictAction="notifyAdmin" userId="d2vswen">
<xsl:attribute name="date">
<xsl:value-of select="."/>
</xsl:attribute>
</executionSettings>
</xsl:template>
</xsl:stylesheet>
更新: 我重新插入了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>
答案 0 :(得分:1)
使用IE9正确执行转换,但不显示重写,因为它不是HTML。
要验证这一点,请单击 F12 并展开HTML选项卡中的元素。
答案 1 :(得分:1)
修复示例时删除了上一个答案。
它适用于我,包括命令行中的saxon6和浏览器中的IE(9)