XSL合并两个xml文件并更新它们

时间:2013-11-15 15:08:49

标签: xslt merge

我有两个类似的命名xml文件。一个在本地目录中,一个在URL上。 我需要一个合并这两个文件的进程,并将本地和外部文件更新为合并版本。 这样做的原因是我们大约有10个用户想要做出贡献,使“数据库”更大,并利用朋友们的条目。 我们运行相同的软件(飞行模拟),当我们存储路线时,它们存储在localroutes.xmlin本地目录c:/ prosim737 /中。这对所有用户都是一样的。 我们的外部文件放在我们的服务器上:www.ourserver.org/cr/companyroutes_net.xml。外部文件上的名称已更改,添加了_net,以便在我的testscripts中保留名称appart。

你帮助med使用xsl文件,该文件将该文件转换为html表。通过这种方式,我们能够以列表形式查看在任何给定时间存储的路线。非常有用。

现在我需要帮助来制作一个自动流程来合并和更新本地和外部的BOTH文件。

示例xml外部文件:

    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="cr.xsl"?>
    <companyroutes>
      <route name="ENBRENGM">ENBR GITRO L24 ADOPI ENGM</route>
      <route name="ENGMENKB">ENGM EVTOG L997 OSVIG P615 INLAS ENKB</route>
      <route name="ENGMENBR">ENGM ATLAP N623 PIRAG ENBR</route>
      <route name="EHAMEGLL">EHAM GORLO L980 LOGAN EGLL</route>
    </companyroutes>

示例xml本地文件:

<?xml version="1.0" encoding="utf-8"?>
<companyroutes>
  <route name="ENGMEKCH">ENGM OKSAT L996 SVD EKCH</route>
  <route name="ENVAENBR">ENVA GEVLI Z108 ROXET ENBR</route>
  <route name="EKCHENGM">EKCH VEDAR L997 LUNIP ENGM</route>
  <route name="EKCHEHAM">EKCH LANGO P999 EEL UP603 BEDUM EHAM</route>
  </companyroutes>

示例结果:

<?xml version="1.0" encoding="utf-8"?>
<companyroutes>
  <route name="ENGMEKCH">ENGM OKSAT L996 SVD EKCH</route>
  <route name="ENVAENBR">ENVA GEVLI Z108 ROXET ENBR</route>
  <route name="EKCHENGM">EKCH VEDAR L997 LUNIP ENGM</route>
  <route name="EKCHEHAM">EKCH LANGO P999 EEL UP603 BEDUM EHAM</route>
  <route name="ENBRENGM">ENBR GITRO L24 ADOPI ENGM</route>
  <route name="ENGMENKB">ENGM EVTOG L997 OSVIG P615 INLAS ENKB</route>
  <route name="ENGMENBR">ENGM ATLAP N623 PIRAG ENBR</route>
  <route name="EHAMEGLL">EHAM GORLO L980 LOGAN EGLL</route>
  </companyroutes>

和外部副本:

 <?xml version="1.0" encoding="utf-8"?>
 <?xml-stylesheet type="text/xsl" href="cr.xsl"?>
    <companyroutes>
      <route name="ENGMEKCH">ENGM OKSAT L996 SVD EKCH</route>
      <route name="ENVAENBR">ENVA GEVLI Z108 ROXET ENBR</route>
      <route name="EKCHENGM">EKCH VEDAR L997 LUNIP ENGM</route>
      <route name="EKCHEHAM">EKCH LANGO P999 EEL UP603 BEDUM EHAM</route>
      <route name="ENBRENGM">ENBR GITRO L24 ADOPI ENGM</route>
      <route name="ENGMENKB">ENGM EVTOG L997 OSVIG P615 INLAS ENKB</route>
      <route name="ENGMENBR">ENGM ATLAP N623 PIRAG ENBR</route>
      <route name="EHAMEGLL">EHAM GORLO L980 LOGAN EGLL</route>
      </companyroutes>

任何有用的帮助!

1 个答案:

答案 0 :(得分:0)

既然你没有表现出任何自己解决问题的努力,我只会给你一个提示。

这可以通过XSLT的document()功能完成。例如,从XML文件“external.xml”中检索内容,如下所示:

<xsl:value-of select="document('external.xml')/companyroutes/route[@name='ENGMEKCH']"/>