Xslt 通过XSL将一种XML格式转换为另一种XML格式
现有的格式是Xslt 通过XSL将一种XML格式转换为另一种XML格式,xslt,xslt-2.0,Xslt,Xslt 2.0,现有的格式是 <A> <B> <C>hello</C> <C>how</C> <C>are</C> <C>you</C> </B> </A> 你好 怎样 是 你 我想把它变成这样 <start> <A> <B> <tag1> hello
<A>
<B>
<C>hello</C>
<C>how</C>
<C>are</C>
<C>you</C>
</B>
</A>
你好
怎样
是
你
我想把它变成这样
<start>
<A>
<B>
<tag1> hello </tag1>
<tag2> hello </tag2>
</B>
</A>
<A>
<B>
<tag1> are </tag1>
<tag2> you </tag2>
</B>
</A>
</start>
<LSR_RESP>
<HDR>
<ORD>AAAAA</ORD>
<ORD>BBBBB</ORD>
<ORD>CCCCC</ORD>
<ORD>DDDDD</ORD>
<ORD>EEEEE</ORD>
<ORD>FFFFF</ORD>
<ORD>GGGGG</ORD>
<ORD>RRRRR</ORD>
<ORD>KKKKK</ORD>
</HDR>
</LSR_RESP>
<entity>
<r>
<c>
<f ID="OrderNumber1">AAAAA</f>
<f ID="OrderNumber2">BBBBB</f>
<f ID="OrderNumber3">CCCCC</f>
<f ID="OrderNumber4">DDDDD</f>
<f ID="OrderNumber5">EEEEE</f>
<f ID="OrderNumber6">FFFFF</f>
<f ID="OrderNumber7">GGGGG</f>
</c>
</r>
<r>
<c>
<f ID="OrderNumber1">RRRRR</f>
<f ID="OrderNumber2">KKKKK</f>
</c>
</r>
</entity>
你好
你好
是
你
现在,此
标记可以出现n次,并且对于每束2个
标记,应创建一个具有相同标记名称的新
标记(请参见tag1和tag2名称在这两种情况下相同)。整个过程是动态的
更新:
我有一个类似这样的动态XML结构
<start>
<A>
<B>
<tag1> hello </tag1>
<tag2> hello </tag2>
</B>
</A>
<A>
<B>
<tag1> are </tag1>
<tag2> you </tag2>
</B>
</A>
</start>
<LSR_RESP>
<HDR>
<ORD>AAAAA</ORD>
<ORD>BBBBB</ORD>
<ORD>CCCCC</ORD>
<ORD>DDDDD</ORD>
<ORD>EEEEE</ORD>
<ORD>FFFFF</ORD>
<ORD>GGGGG</ORD>
<ORD>RRRRR</ORD>
<ORD>KKKKK</ORD>
</HDR>
</LSR_RESP>
<entity>
<r>
<c>
<f ID="OrderNumber1">AAAAA</f>
<f ID="OrderNumber2">BBBBB</f>
<f ID="OrderNumber3">CCCCC</f>
<f ID="OrderNumber4">DDDDD</f>
<f ID="OrderNumber5">EEEEE</f>
<f ID="OrderNumber6">FFFFF</f>
<f ID="OrderNumber7">GGGGG</f>
</c>
</r>
<r>
<c>
<f ID="OrderNumber1">RRRRR</f>
<f ID="OrderNumber2">KKKKK</f>
</c>
</r>
</entity>
AAAA
BBBBB
CCCCC
DDD
EEEEE
FFFFF
GGGGG
RRR
KKKK
我想通过XSLT将其转换为如下内容
<start>
<A>
<B>
<tag1> hello </tag1>
<tag2> hello </tag2>
</B>
</A>
<A>
<B>
<tag1> are </tag1>
<tag2> you </tag2>
</B>
</A>
</start>
<LSR_RESP>
<HDR>
<ORD>AAAAA</ORD>
<ORD>BBBBB</ORD>
<ORD>CCCCC</ORD>
<ORD>DDDDD</ORD>
<ORD>EEEEE</ORD>
<ORD>FFFFF</ORD>
<ORD>GGGGG</ORD>
<ORD>RRRRR</ORD>
<ORD>KKKKK</ORD>
</HDR>
</LSR_RESP>
<entity>
<r>
<c>
<f ID="OrderNumber1">AAAAA</f>
<f ID="OrderNumber2">BBBBB</f>
<f ID="OrderNumber3">CCCCC</f>
<f ID="OrderNumber4">DDDDD</f>
<f ID="OrderNumber5">EEEEE</f>
<f ID="OrderNumber6">FFFFF</f>
<f ID="OrderNumber7">GGGGG</f>
</c>
</r>
<r>
<c>
<f ID="OrderNumber1">RRRRR</f>
<f ID="OrderNumber2">KKKKK</f>
</c>
</r>
</entity>
AAAA
BBBBB
CCCCC
DDD
EEEEE
FFFFF
GGGGG
RRR
KKKK
现在,正如您在上面看到的,每个行标记都是通过在7组中获取标记值来创建的。
新标签的名称也将以7为一组重新标注,如“OrderNumber1”到“OrderNumber7”。
该字段可以出现n次,但新结构将以7组的形式形成
像上面的例子一样,有9个标签,因此它形成了2个组,7个组中的一个留下(9-7),即下一个组有2个标签,因此在下一个组中,您只能看到OrderNumber1和OrderNumber2。
如果有10个标签,它将是一组7个,然后是另一组3个。
如果有15个标记,它将是两组7个,然后是另一组1个。最简单的方法(XSLT 1.0到目前为止已经足够):
另外,由于使用单独的模板和
/
,可能更灵活:
但话说回来,可能这太复杂了,这取决于你的实际数据。关键点是只选择感兴趣的
节点(位于奇数位置的节点),并围绕它们构建其余的转换
两个模板都会导致:
<start>
<A>
<B>
<tag1>hello</tag1>
<tag2>how</tag2>
</B>
</A>
<A>
<B>
<tag1>are</tag1>
<tag2>you</tag2>
</B>
</A>
</start>
你好
怎样
是
你
最简单的方法(XSLT 1.0目前已经足够):
另外,由于使用单独的模板和
/
,可能更灵活:
但话说回来,可能这太复杂了,这取决于你的实际数据。关键点是只选择感兴趣的
节点(位于奇数位置的节点),并围绕它们构建其余的转换
两个模板都会导致:
<start>
<A>
<B>
<tag1>hello</tag1>
<tag2>how</tag2>
</B>
</A>
<A>
<B>
<tag1>are</tag1>
<tag2>you</tag2>
</B>
</A>
</start>
你好
怎样
是
你
这对我来说不清楚,你能给我们你已经有的代码吗?你可能想看看不确定要问什么,也许你正在寻找的是如何使用XSLT转换XML?这对我来说不清楚,你能给我们你已经有的代码吗?你可能想看看也不确定要问什么,也许您正在寻找的是如何使用XSLT转换XML?很高兴知道有人理解XSLT!我希望我是其中之一。很高兴知道有人理解XSLT!我希望我是他们中的一员。