XSLT 中的序列



my xml 输入是-

<?xml version="1.0" encoding="UTF-8"?> 
<foo>  <bar>bar</bar> 
       <bar>bar</bar> 
       <foobar>foobar</foobar> 
       <foobar>foobar</foobar> 
       <foobar>foobar</foobar>
       <bar>bar</bar>
       <bar>bar</bar> 
</foo>

使用 xslt 的输出应该是

 <?xml version="1.0" encoding="UTF-8"?>
 <foo>  
 <s> 
 <s> 
 <bar>bar</bar>  
 <bar>bar</bar>
 </s>
 <s> 
 <foobar>foobar></foobar>
 <foobar>foobar></foobar>
 <foobar>foobar></foobar>
 </s> 
 <s>      
 <bar>bar</bar>  
 <bar>bar</bar> 
 </s>
 </s>
</foo>

输出应在父元素中具有元素序列。混合元素序列将在父节点"s"内移动。是否有任何 xslt 命令可以检测序列并相应地处理 xml。非常感谢。

与此处相同,使用名称不同的第一个前一个同级的 id 对记录进行分组:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:key name="adjacentByName" match="foo/*" use="generate-id(preceding-sibling::*[not(name()=name(current()))][1])" />
<xsl:template match="/">
<foo><s>
    <xsl:for-each select="foo/*[generate-id()=generate-id(key('adjacentByName', generate-id(preceding-sibling::*[not(name()=name(current()))][1]))[1])]">
        <s>
            <xsl:for-each select="key('adjacentByName', generate-id(preceding-sibling::*[not(name()=name(current()))][1]))">
                <xsl:copy-of select="."/>
            </xsl:for-each>
        </s>
    </xsl:for-each>
</s></foo>
</xsl:template>
</xsl:stylesheet>

添加:

但是我得到的输出

与我想要的输出不同......

当应用于(清理)输入时:

<?xml version="1.0" encoding="UTF-8"?> 
<foo>
    <bar>bar</bar> 
    <bar>bar</bar> 
    <foobar>foobar</foobar> 
    <foobar>foobar</foobar> 
    <foobar>foobar</foobar>
    <bar>bar</bar>
    <bar>bar</bar> 
</foo>

结果是:

<?xml version="1.0" encoding="utf-8"?>
<foo>
  <s>
    <s>
      <bar>bar</bar>
      <bar>bar</bar>
    </s>
    <s>
      <foobar>foobar</foobar>
      <foobar>foobar</foobar>
      <foobar>foobar</foobar>
    </s>
    <s>
      <bar>bar</bar>
      <bar>bar</bar>
    </s>
  </s>
</foo>

在我看来,这似乎正是您要求的结果:

<?xml version="1.0" encoding="UTF-8"?>
 <foo>  
 <s> 
 <s> 
 <bar>bar</bar>  
 <bar>bar</bar>
 </s>
 <s> 
 <foobar>foobar></foobar>
 <foobar>foobar></foobar>
 <foobar>foobar></foobar>
 </s> 
 <s>      
 <bar>bar</bar>  
 <bar>bar</bar> 
 </s>
 </s>
</foo>

除了<foobar>元素内的>字符,我已经从输入中删除了这些字符。

--

附言请不要在回答后删除您的问题。

相关内容

  • 没有找到相关文章

最新更新