使用XSLT匹配并替换XML元素的名称/值对
我正在尝试使用XSLT编写匹配和替换函数。我有两个变量,其中有不同的名称-值对。两个变量中的名称很少匹配。我需要替换匹配的名称-值对的值。例如:使用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
<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,因为这项任务会变得更容易。