首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XSLT,其批号为“什么时候”,每个公司的情况不同。如何管理?

XSLT,其批号为“什么时候”,每个公司的情况不同。如何管理?
EN

Stack Overflow用户
提问于 2022-07-27 11:44:21
回答 1查看 48关注 0票数 0

我有一个xslt文件,它将Peppol供应商发票转换为可以导入到我们的ERP-系统中的xml。导入的xml对于每个管理具有相同的布局,因此xslt也可以应用于每个管理。但是,xslt包含长列表(许多供应商),以包含供应商相关的供应商和其他参数。xslt中的供应商列表在每个管理中是不同的(我们有大约10个管理/公司,每个供应商大约有100个供应商,我们从其中导入xml发票)。

代码语言:javascript
复制
<xsl:variable name="VendorShortName">
<xsl:choose>
<xsl:when test="cac:PartyName/cbc:Name = 'SuperVendor'">SuperV</xsl:when>
....
....
<xsl:otherwise><xsl:value-of select="cbc:Name"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>                                                            
    
<SupplierAccountNum> 
<xsl:choose>
<xsl:when test="cbc:Name = 'SuperVendor'">20220</xsl:when>
....
....
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</SupplierAccountNum>

将来,我希望用SQL动态地生成xslt,并将源信息包含在我们的ERP系统中,但目前我不得不手动管理这些列表。

理想情况下,我希望将这些列表放在不同的文档中,并根据管理(=公司)的名称包括这些文档/列表。这使得手动管理更容易。

在如何管理这方面有什么最佳实践吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-27 12:45:03

将这样的辅助数据保存在外部XML文件中,并让XSLT在运行时加载适当的XML,并使用它查找内容确实非常简单。

例如,如果输入文档为您提供了合适的名称,您可能会决定为每个供应商拥有一个单独的查找文件,并按名称加载它。遵循您的示例,下面是一个名为SuperVendor.xml的文件

代码语言:javascript
复制
<vendor>
   <shortName>SuperV</shortName>
   <accountNum>20220</accountNum>
</vendor>

在XSLT中,您可以动态加载该文件:

代码语言:javascript
复制
<xsl:variable name="vendor-file" select="concat(/cac:PartyName/cbc:Name, '.xml')">
<xsl:variable name="vendor-data" select="document($vendor-file)/vendor"/>

然后您就可以在XSLT中的任何地方使用该查找数据..。

代码语言:javascript
复制
<SupplierAccountNum><xsl:value-of select="$vendor-data/accountNum"/></supplierAccountNum>

如果以这种方式管理更方便,也可以从包含所有供应商数据的单个XML文件中读取,更像这样:

代码语言:javascript
复制
<vendors>
   <vendor>
      <name>SuperVendor</name>
      <shortName>SuperV</shortName>
      <accountNum>20220</accountNum>
   </vendor>
   ...
</vendors>

..。然后像这样加载:

代码语言:javascript
复制
<xsl:variable name="current-vendor-name" select="/cac:PartyName/cbc:Name"/>
<xsl:variable name="vendor-data" 
   select="document('vendors.xml')/vendors/vendor[name=$current-vendor-name]"/>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73137322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档