XSLT用新父节点包装节点组

时间:2018-02-19 11:40:48

标签: xml xslt xpath

我有一个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>

对此的任何帮助都会得到很好的接受。谢谢你的期待

 :-)

0 个答案:

没有答案