diff --git a/templates/opera2an.xslt b/templates/opera2an.xslt index 82c023e8e2056f11f0444441594f3dcabd89ee5a..023fae88392aa93082108ae600028f10419f2e53 100644 --- a/templates/opera2an.xslt +++ b/templates/opera2an.xslt @@ -62,13 +62,24 @@ </debateBody> </xsl:template> -<xsl:template match="tei:sg"> +<xsl:template match="tei:sg[not(tei:stage)]"> <speech by="#{translate(tei:singer[1]/@who,' ','-')}"> <xsl:apply-templates/> </speech> </xsl:template> -<xsl:template match="tei:sg/tei:stage" /> +<xsl:key name="stageKey" match="tei:sg/*[not(self::tei:singer|self::tei:stage)]" + use="concat(generate-id(..), '|', generate-id(preceding-sibling::tei:stage[1]))" /> + +<xsl:template match="tei:sg[tei:stage]"> + <xsl:for-each select="*[generate-id() = generate-id(key('stageKey', concat(generate-id(..), '|', generate-id(preceding-sibling::tei:stage[1])))[1])]"> + <xsl:apply-templates select="preceding-sibling::tei:stage[1]" /> + <speech by="#{translate(../tei:singer[1]/@who,' ','-')}"> + <xsl:apply-templates select="../tei:singer[1]" /> + <xsl:apply-templates select="key('stageKey', concat(generate-id(..), '|', generate-id(preceding-sibling::tei:stage[1])))" /> + </speech> + </xsl:for-each> +</xsl:template> <xsl:template match="tei:stage"> <narrative>