我已经开发了一个Microsoft Access流程,该流程用于使用导入XSLT转换将XML文件直接导入到Microsoft Access表中,然后使用导出XSLT转换将相同的数据导出到XML文件中。
此过程很好并且很容易。
由于Microsoft Access基本上是Microsoft SQL,因此我想在Microsoft SQL Server 2016中开发完全相同的过程。
基本上,我要指向要导入的XML文件,指向要向其中导入XML数据的SQL表,指向“导入XSLT转换文件”并执行该过程。
此外,我要指向要导出的SQL表,指向“导出XSLT转换”文件,指向要创建的XML导出文件的名称,然后执行该过程。
我使用存储过程在SQL中创建了一个类似的过程。 我创建的过程通常可以正常工作,但是我无法使数据正确格式化。见问题 提取XML数据并将其输出到文件以保存在文件夹中
这正是我在Microsoft Access 2016中所做的:
导入:
Right Click on the Table to be imported into
Choose Import, then XML File
Point to the XML File to be Imported, OK
Choose Append Data to Existing Table(s)
Choose Transform
Choose the XSLT Import XSLT File to be used
Click OK, OK, and Close
导出:
Right Click on the Table to be Exported from
Choose Export, then XML File
Point to the XML File to be Exported into, OK
Choose Data (XML) and then More Options
Choose Transforms
Choose the XSLT Export XSLT File to be used
Click OK, OK, and Close
导入XSLT文件:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<ServiceEvents>
<xsl:for-each select="ServiceEvents/ServiceEvent">
<ServiceEvent>
<Service_SRI><xsl:value-of select="SourceRecordIdentifier"/></Service_SRI>
<Expend_Mod_1><xsl:value-of select="ServiceEventExpenditureModifiers/ServiceEventExpenditureModifier[1]"/></Expend_Mod_1>
<Expend_Mod_2><xsl:value-of select="ServiceEventExpenditureModifiers/ServiceEventExpenditureModifier[2]"/></Expend_Mod_2>
</ServiceEvent>
</xsl:for-each>
</ServiceEvents>
</xsl:template>
</xsl:stylesheet>
导出XSLT文件:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<ServiceEvents>
<xsl:for-each select="dataroot/ServiceEvent">
<ServiceEvent>
<SourceRecordIdentifier><xsl:value-of select="Service_SRI"/></SourceRecordIdentifier>
<ServiceEventExpenditureModifiers>
<ServiceEventExpenditureModifier><xsl:value-of select="Expend_Mod_1"/></ServiceEventExpenditureModifier>
<ServiceEventExpenditureModifier><xsl:value-of select="Expend_Mod_2"/></ServiceEventExpenditureModifier>
</ServiceEventExpenditureModifiers>
</ServiceEvent>
</xsl:for-each>
</ServiceEvents>
</xsl:template>
</xsl:stylesheet>
访问表定义:
Record-1 Record-2
Service_SRI Number 1 2
Expend_Mod_1 Short Text C1 C3
Expend_Mod_2 Short Text C2 C4
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<ServiceEvents>
<ServiceEvent>
<SourceRecordIdentifier>1</SourceRecordIdentifier>
<ServiceEventExpenditureModifiers>
<ServiceEventExpenditureModifier>
<ModifierCode>C1</ModifierCode>
</ServiceEventExpenditureModifier>
<ServiceEventExpenditureModifier>
<ModifierCode>C2</ModifierCode>
</ServiceEventExpenditureModifier>
</ServiceEventExpenditureModifiers>
</ServiceEvent>
<ServiceEvent>
<SourceRecordIdentifier>2</SourceRecordIdentifier>
<ServiceEventExpenditureModifiers>
<ServiceEventExpenditureModifier>
<ModifierCode>C3</ModifierCode>
</ServiceEventExpenditureModifier>
<ServiceEventExpenditureModifier>
<ModifierCode>C4</ModifierCode>
</ServiceEventExpenditureModifier>
</ServiceEventExpenditureModifiers>
</ServiceEvent>
</ServiceEvents>
我希望XML输出文件看起来与显示的XML输入文件完全相同。
我要的是: 我可以使用Microsoft SQL Server代码执行与在Microsoft Access中完全相同的过程,但是在Microsoft SQL Server中使用上面提供的XSLT文件执行了相同的过程。
谢谢您的任何建议。