使用XSLT匹配并替换XML元素的名称/值对

使用XSLT匹配并替换XML元素的名称/值对,xslt,replace,match,xslt-1.0,Xslt,Replace,Match,Xslt 1.0,我正在尝试使用XSLT编写匹配和替换函数。我有两个变量,其中有不同的名称-值对。两个变量中的名称很少匹配。我需要替换匹配的名称-值对的值。例如: <original_val>xxx=123,iii=kos,123=hfj,i920=owp02</original_val> <replace_val>xxx=abc,i920=23ew</replace_val> xxx=123,iii=kos,123=hfj,i920=owp02 xxx=abc

我正在尝试使用XSLT编写匹配和替换函数。我有两个变量,其中有不同的名称-值对。两个变量中的名称很少匹配。我需要替换匹配的名称-值对的值。例如:

<original_val>xxx=123,iii=kos,123=hfj,i920=owp02</original_val>

<replace_val>xxx=abc,i920=23ew</replace_val>
xxx=123,iii=kos,123=hfj,i920=owp02
xxx=abc,i920=23ew
从上面你可以看到

替换_val

元素的名称与中的名称相匹配

原件

元素


我的任务是使用XSL将original_val元素中的xxx和i920的值替换为replace_val元素的值。xxx和i920的值完全是随机的。我使用的是XSLT版本1。任何提示都会非常有用。

我的提示是使用模板拆分两个字符串,并创建两个包含以下内容的新变量:

<originalSplit>
  <element>
    <name>xxx</name>
    <value>123</value>
  </element>
  <element>
    <name>iii</name>
    <value>kos</value>
  </element>
  <element>
    <name>123</name>
    <value>hfj</value>
  </element>
  <element>
    <name>i920</name>
    <value>owp02</value>
  </element>
</originalSplit>

<replaceSplit>
  <element>
    <name>xxx</name>
    <value>abc</value>
  </element>
    <name>i920</name>
    <value>23ew</value>
  </element>
</replaceSplit>

xxx
123
三,
科斯
123
hfj
i920
owp02
xxx
abc
i920
23ew

然后可以循环遍历originalSplit变量的元素并输出每个元素的名称。然后检查replacespilt变量中是否有名称匹配。如果是,则输出替换值。如果不是,则输出原始值。关于如何在XSLT1.0中拆分分隔字符串,本网站有很多问题。我建议使用这些答案中的一个。

我的建议是使用模板拆分两个字符串,并创建两个包含以下内容的新变量:

<originalSplit>
  <element>
    <name>xxx</name>
    <value>123</value>
  </element>
  <element>
    <name>iii</name>
    <value>kos</value>
  </element>
  <element>
    <name>123</name>
    <value>hfj</value>
  </element>
  <element>
    <name>i920</name>
    <value>owp02</value>
  </element>
</originalSplit>

<replaceSplit>
  <element>
    <name>xxx</name>
    <value>abc</value>
  </element>
    <name>i920</name>
    <value>23ew</value>
  </element>
</replaceSplit>

xxx
123
三,
科斯
123
hfj
i920
owp02
xxx
abc
i920
23ew

然后可以循环遍历originalSplit变量的元素并输出每个元素的名称。然后检查replacespilt变量中是否有名称匹配。如果是,则输出替换值。如果不是,则输出原始值。关于如何在XSLT1.0中拆分分隔字符串,本网站有很多问题。我建议使用这些答案中的一个。

最好的提示是升级到XSLT 2.0,因为这项任务会变得更容易。最好的提示是升级到XSLT 2.0,因为这项任务会变得更容易。