【发布时间】:2020-08-20 11:48:53
【问题描述】:
我有一些 XML 文件要转换成更小的标准化 XML 文件。为此,我使用 VBA 和 XSLT 作为模板。
我的问题是我在转换时收到错误,并且在使用 http://xsltransform.net/ 时我无法在 XSLT 模板中发现错误。
有人可以帮我调整 XSLT 以便能够使用节点“FileVersion”提取/创建 XML
下面是 XML 文件的示例:
<?xml version="1.0" encoding="UTF-8"?>
<AuditFile xmlns="urn:UP:Standard" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:UP:Standard C:\Standard.XSD">
<Header>
<FileVersion>1_01</FileVersion>
<CompanyID>507</CompanyID>
<TaxBasis>W239</TaxBasis>
</Header>
</AuditFile>
使用的 XSL 模板:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/Header">
<root>
<xsl:apply-templates select="FileVersion"/>
</root>
</xsl:template>
<xsl:template match="Header">
<FileVersion>
<xsl:value-of select="FileVersion" />
</FileVersion>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
如果您收到错误,则显示确切的错误消息。运行您的代码时我没有收到任何错误 - 但结果不是您所期望的,因为 (1)
Header不是根元素并且 (2) 源 XML 具有默认命名空间并且 (3) 您没有模板匹配FileVersion.