【问题标题】:How to reference grouped elements in XSLT 2.0?如何在 XSLT 2.0 中引用分组元素?
【发布时间】:2016-02-22 05:14:22
【问题描述】:

我想对以下 XML 文件进行分组:

<record>
    <word>Hallo</word><translit>XUPPY</translit><gloss>gloss1</gloss>
    <word>Bye</word><translit>EHS</translit><gloss>gloss2</gloss>
    <word>Yes</word><translit>KGR</translit><gloss>gloss3</gloss>
</record>

想要的输出是

<s>
    <set><word>Hallo</word><gloss>gloss1</gloss></set>
    <set><word>Bye</word><gloss>gloss2</gloss></set>
    <set><word>Yes</word><gloss>gloss3</gloss></set>
</s>

所以我使用for-each-group,如

<xsl:template match="record">
    <xsl:element name="s">
        <xsl:for-each-group select="*" group-starting-with="word">
            <xsl:element name = "set">
                <xsl:copy-of select="current-group()/word"/>
                <xsl:copy-of select="current-group()/gloss"/>
            </xsl:element>
        </xsl:for-each-group>
    </xsl:element>
</xsl:template>

但是,我得到了这个输出,即空组:

<s><set/><set/><set/></s> 

所以我在引用组中的元素时做错了。但是什么?我相信它一定很简单。

【问题讨论】:

    标签: xml xslt xslt-grouping


    【解决方案1】:

    wordgloss 是当前组的成员,而不是它的children

    试试:

    <xsl:template match="/record">
        <s>
            <xsl:for-each-group select="*" group-starting-with="word">
                <set>
                    <xsl:copy-of select="current-group()[self::word or self::gloss]"/>
                </set>
            </xsl:for-each-group>
        </s>
    </xsl:template>
    

    【讨论】:

      【解决方案2】:

      current-group() 为您提供组中的所有元素,如果您想选择某个元素,请使用 current-group()[self::gloss]

      我会替换

              <xsl:element name = "set">
                  <xsl:copy-of select="current-group()/word"/>
                  <xsl:copy-of select="current-group()/gloss"/>
              </xsl:element>
      

      <set>
        <xsl:copy-of select="., current-group()[self::gloss]"/>
      </set>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        • 2014-05-13
        • 1970-01-01
        • 2012-11-24
        • 2022-01-12
        • 1970-01-01
        • 2021-11-24
        相关资源
        最近更新 更多