我有一个问题。我有以下的源xml文件:
源xml:
具体翻译如下:
元素“c”的ID为“g”,在源XML中非常重要。这是一个连接字符串,其值用“|”分隔。我们需要这些值来生成目标XML。
您可以使用ID为“b”的元素“c”来分离“uid”。 值的示例和解释:
所有具有相同“uid”的元素必须聚合成一个单独的“TestTag”元素(请参见目标xml)。 具有相同父元素(例如“tag1”)的所有属性(attr1,attr2)需要添加到一个元素中。 我只能使用xslt(xpath)1.0。 转换后,目标xml文件应该如下所示。
将源XML转换为目标XML的可能解决方案是什么?我尝试了几种方法,但现在卡住了。
源xml:
<Container>
<DataHeader>
<c id="b" value="TAG" />
<c id="g" value="Info" />
</DataHeader>
<Data>
<Rows>
<r no="1">
<c id="b" value="uid1" uid="T.A.uid1" />
<c id="g" value="uid1|tag1|attr1|somevalue1" />
</r>
<r no="1">
<c id="b" value="uid1" uid="T.A.uid1" />
<c id="g" value="uid1|tag1|attr2|somevalue2" />
</r>
<r no="2">
<c id="b" value="uid1" uid="T.A.uid1" />
<c id="g" value="uid1|tag2|attr3|somevalue3" />
</r>
<r no="10">
<c id="b" value="uid2" uid="T.A.uid2" />
<c id="g" value="uid2|tag1|attr1|somevalue4" />
</r>
<r no="11">
<c id="b" value="uid2" uid="T.A.uid2" />
<c id="g" value="uid2|tag2|attr3|somevalue5" />
</r>
</Rows>
</Data>
</Container>
具体翻译如下:
元素“c”的ID为“g”,在源XML中非常重要。这是一个连接字符串,其值用“|”分隔。我们需要这些值来生成目标XML。
您可以使用ID为“b”的元素“c”来分离“uid”。 值的示例和解释:
<c id="g" value="uid1|tag1|attr1|somevalue1" />
**uid value** | element node | **attribute** | attribute value
**uid1** | tag1 | **attr1** |somevalue1
所有具有相同“uid”的元素必须聚合成一个单独的“TestTag”元素(请参见目标xml)。 具有相同父元素(例如“tag1”)的所有属性(attr1,attr2)需要添加到一个元素中。 我只能使用xslt(xpath)1.0。 转换后,目标xml文件应该如下所示。
<Container>
<TestTag>
<object UID="T.A.uid1" Name="uid1"/>
<tag1 attr1="somevalue1" attr2="somevalue2"/>
<tag2 attr3="*somevalue3"/>
</TestTag>
<TestTag>
<Iobject UID="T.A.uid2" Name="uid2"/>
<tag1 attr1="somevalue4" />
<tag2 attr3="somevalue5"/>
</TestTag>
</Container>
将源XML转换为目标XML的可能解决方案是什么?我尝试了几种方法,但现在卡住了。