我有一个XPath表达式,可以在XML文件上正常工作,以选择包含某个属性“Culture”的所有节点。它们在整个文档中以相同的顺序出现在5个组中。
我需要对这5个节点进行分组,并用新的父节点集围绕它们。其中一些组已经有一个父节点,其他组则没有。
我尝试过使用current-group()并且失败了,任何指针都会被收到。
这是找到所有节点的表达式,我确信它可以缩短但是有效。 // [@文化= '去DE'] | // [@文化= 'ES-ES'] | // [@文化= 'FR-CA'] | / / [@文化= '它-IT'] | // * [@文化= 'EN-CA']
以下是XML的简短片段,实际文件近200,000个字符,这些节点严重嵌套。
<?xml version="1.0" encoding="utf-8"?>
<Survey Id="y77343555" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance.xsd" >
<Xflow>
<Answer Code="4">
<Text Culture="en-CA">34</Text>
<Text Culture="fr-CA">34</Text>
<Text Culture="es-ES">34</Text>
<Text Culture="de-DE">34</Text>
<Text Culture="it-IT">34</Text>
</Answer>
<InstructionText Culture="en-CA">34</InstructionText>
<InstructionText Culture="fr-CA">34</InstructionText>
<InstructionText Culture="es-ES">34</InstructionText>
<InstructionText Culture="de-DE">34</InstructionText>
<InstructionText Culture="it-IT">34</InstructionText>
<Answer Code="45">
<Route Code="12">
<Text Culture="en-CA">34</Text>
<Text Culture="fr-CA">34</Text>
<Text Culture="es-ES">34</Text>
<Text Culture="de-DE"><Script>Some javasript or jquery</Script></Text>
<Text Culture="it-IT">34</Text>
</Route>
</Answer>
<Text Culture="en-CA">34</Text>
<Text Culture="fr-CA">34</Text>
<Text Culture="es-ES">34</Text>
<Text Culture="de-DE">34</Text>
<Text Culture="it-IT">34</Text>
</Xflow>
这就是我想要实现的目标。输出中节点的顺序必须与原始节点的顺序相同,并且必须维护嵌套代码。
<?xml version="1.0" encoding="utf-8"?>
<Survey Id="y77343555" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance.xsd" >
<Xflow>
<Answer Code="4">
<NewNode>
<Text Culture="en-CA">34</Text>
<Text Culture="fr-CA">34</Text>
<Text Culture="es-ES">34</Text>
<Text Culture="de-DE">34</Text>
<Text Culture="it-IT">34</Text>
</NewNode>
</Answer>
<NewNode>
<InstructionText Culture="en-CA">34</InstructionText>
<InstructionText Culture="fr-CA">34</InstructionText>
<InstructionText Culture="es-ES">34</InstructionText>
<InstructionText Culture="de-DE"><Script>Some javasript or jquery</script></InstructionText>
<InstructionText Culture="it-IT">34</InstructionText>
</NewNode>
<Answer Code="45">
<Route Code="12">
<NewNode>
<Text Culture="en-CA">34</Text>
<Text Culture="fr-CA">34</Text>
<Text Culture="es-ES">34</Text>
<Text Culture="de-DE">34</Text>
<Text Culture="it-IT">34</Text>
</NewNode>
</Route>
</Answer>
<NewNode>
<Text Culture="en-CA">34</Text>
<Text Culture="fr-CA">34</Text>
<Text Culture="es-ES">34</Text>
<Text Culture="de-DE">34</Text>
<Text Culture="it-IT">34</Text>
</NewNode>
</Xflow>
</Survey>
对此的任何帮助都会得到很好的接受。谢谢你的期待
:-)