匹配子串中的XSLT分组

时间:2017-02-15 08:46:14

标签: xml xslt xslt-2.0 xslt-grouping

我正在为xslt做一个未解析的文本()。所以数据来自文本文件

我需要获取元素thistagwithsomeattributes的结束标记作为matching-string中组的一部分,如下所示:

      <xsl:template  match="/" name="text2xml">
      <xsl:variable name="entries" as="node()*">
        <xsl:analyze-string select="$textfile" regex="\r\n?|\n">
            <xsl:non-matching-substring>
              <xsl:analyze-string select="." regex="someregcode">
        <xsl:matching-substring>
          <group>
           <thistagwithsomeattributes>
             <abc>some value coming from regex</abc>
             <cde>some value from regex</cde>
           </thistagwithsomeattributes>
          </group>
         </xsl:matching-substring>
      </xsl:analyze-string>
            </xsl:non-matching-substring>
          </xsl:analyze-string>     
    </xsl:variable>

 <xsl:for-each-group select="$entries" group-by="abc">
        <final>
         <xsl:copy-of 
            select="current-group()[1]/abc,current-group()/*[not(self::abc)]"/>

        </final>
      </xsl:for-each-group>      

以上对我不起作用。如果我删除元素thistagwithsomeattributes,那么它可以工作。如何在匹配的子字符串中将此元素作为组的一部分。我需要这个,因为这个元素的属性将具有不同的组

  

我想要实现的目标(遵循XML结构):

<thistagwithsomeattributes  att1="fromregexwithinggroup" att2="fromregexwithinggrouop">
<someelement>
<anothertagwithattributes att1="fromregexvalues">
 <cont>
     <itm>
      abc>some value coming from regex</abc>
     <cde>some value from regex</cde>
     </itm>
 </cont>
</anothertagwithattributes>
</thistagwithsomeattributes>

现在当我输入<thistagwithsomeattributes><anothertagwithattributes>时,它不起作用(没有结果),xml文件为空。但是当我删除它们。我得到以下结果:

1 个答案:

答案 0 :(得分:1)

您需要调整<xsl:for-each-group select="$entries"<xsl:for-each-group select="$entries/thistagwithsomeattributes"