XSLT1.0(xsltproc)-如何使用XSLT解析XML值并将其添加到已形成的XML中?

XSLT1.0(xsltproc)-如何使用XSLT解析XML值并将其添加到已形成的XML中?,xslt,xslt-1.0,Xslt,Xslt 1.0,Output.xml已形成 我必须解析Input.xml,从Input.xml中的映射中找到测试ID的特征ID,并将其添加到Output.xml 我想这可以通过XSLT实现。XSLT会是什么样子 Input.xml <Mapping> <Test> <Test_ID>123</Test_ID> <Feature_ID>111</Feature_ID> </Test> <Test

Output.xml已形成

我必须解析Input.xml,从Input.xml中的映射中找到测试ID的特征ID,并将其添加到Output.xml

我想这可以通过XSLT实现。XSLT会是什么样子

Input.xml

<Mapping>
  <Test>
    <Test_ID>123</Test_ID>
    <Feature_ID>111</Feature_ID>
  </Test>
   <Test>
    <Test_ID>456</Test_ID>
    <Feature_ID>222</Feature_ID>
  </Test>
</Mapping>

123
111
456
222
当前(已形成)Output.xml

<?xml version="1.0" encoding="UTF-8"?>
<Suite>
  <Test>
    <Test_ID>123</Test_ID>
    <Test_Name>Test_First</Test_Name>
  </Test>
   <Test>
    <Test_ID>456</Test_ID>
    <Test_Name>Test_Second</Test_Name>
  </Test>
</Suite>

<Suite>
  <Test>
    <Test_ID>123</Test_ID>
    <Test_Name>Test_First</Test_Name>
    <Feature_ID>111</Feature_ID>
  </Test>
   <Test>
    <Test_ID>456</Test_ID>
    <Test_Name>Test_Second</Test_Name>
    <Feature_ID>222</Feature_ID>
  </Test>
</Suite>


123
先测试一下
456
测试秒
所需输出.xml

<?xml version="1.0" encoding="UTF-8"?>
<Suite>
  <Test>
    <Test_ID>123</Test_ID>
    <Test_Name>Test_First</Test_Name>
  </Test>
   <Test>
    <Test_ID>456</Test_ID>
    <Test_Name>Test_Second</Test_Name>
  </Test>
</Suite>

<Suite>
  <Test>
    <Test_ID>123</Test_ID>
    <Test_Name>Test_First</Test_Name>
    <Feature_ID>111</Feature_ID>
  </Test>
   <Test>
    <Test_ID>456</Test_ID>
    <Test_Name>Test_Second</Test_Name>
    <Feature_ID>222</Feature_ID>
  </Test>
</Suite>


123
先测试一下
111
456
测试秒
222
另外,如何在下面的命令中传递Output.xml


< XSLTPROXXSLT.XSL InPut.xml > OutPuxNeX.XML/P>< P>将元素从一个文档复制到另一个文档,考虑XSLT脚本中的函数。然后在上调用
xsltproc
,只运行主输入文档

实际上,根据您想要的结果,输入应该是输出的,反之亦然,因为根是Suite

XSLT(注意里面引用的Input.xml)

结果

<Suite>
  <Test>
    <Test_ID>123</Test_ID>
    <Test_Name>Test_First</Test_Name>
    <Feature_ID>111</Feature_ID>
  </Test>
  <Test>
    <Test_ID>456</Test_ID>
    <Test_Name>Test_Second</Test_Name>
    <Feature_ID>222</Feature_ID>
  </Test>
</Suite>

123
先测试一下
111
456
测试秒
222

使用完全相同的代码尝试了上述解决方案。但是,myDesiredResult.xml与Output.xml相同[Test\u ID=$curr\u ID]是否尝试获取匹配的索引?
。如果我像这样硬编码索引,它可以打印所有输出值的第二个值。这意味着,本质上,这个解决方案的其余部分正在工作,除了没有使用Test[Test_ID=$curr_ID]准确地计算索引这已经使用您发布的两个输入进行了测试。可能您的实际XML在某些方面有所不同。是否有办法调整您的解决方案,以便在映射XML中找不到测试ID的对应功能ID时,它仍会在输出中为未找到的标记打印空标记()?现在,它没有。