Commit f84de45d authored by Jérôme Chauveau's avatar Jérôme Chauveau
Browse files

pipeline v1 par EC.

parent fa39b6b5
Loading
Loading
Loading
Loading

xsl/tei/01-tei2tei.xsl

0 → 100644
+108 −0
Changes for xsl/tei/01-tei2tei.xsl: 108 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>

<!-- 
Code source sous licence CECILL-C. Veuillez vous référer au fichier LICENSE.txt pour plus d'informations
Source code under CECILL-C licence. Please refer to the LICENSE.txt file for more information.
 -->

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:tei="http://www.tei-c.org/ns/1.0"  
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xmlns:mml="http://www.w3.org/1998/Math/MathML"
  exclude-result-prefixes="tei xsl">
    
<xsl:output method="xml" encoding="UTF-8" indent="no"/>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>
    
<xsl:template match="//tei:body">
    <body xmlns="http://www.tei-c.org/ns/1.0">
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
    </body>
    <xsl:if test="not(following-sibling::tei:back) and //tei:index">
        <!-- création d'un back non existant et si présence d'entrée d'index-->
        <back xmlns="http://www.tei-c.org/ns/1.0" >
            <div xmlns="http://www.tei-c.org/ns/1.0" type="index" xml:id="index">
                <head>Index</head>
                <xsl:for-each select="//tei:index">
                    <xsl:variable name="indexName">
                        <xsl:choose>
                            <xsl:when test="contains(@indexName,':')">
                                <xsl:value-of select="substring-before(@indexName,':')"/>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:value-of select="@indexName"/>
                            </xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <index n="level1">
                        <term><xsl:value-of select="$indexName"/></term>
                        <xsl:choose>
                            <xsl:when test="contains(@indexName,':')">
                                <index n="level2">
                                    <term><xsl:value-of select="substring-after(@indexName,':')"/></term>
                                    <index n="level3" source="{concat('#term',count(./preceding::tei:term) + 1)}"><xsl:copy-of select="tei:term"/></index>
                                </index>
                            </xsl:when>
                            <xsl:otherwise>
                                <index n="level2" source="{concat('#term',count(./preceding::tei:term) + 1)}"><xsl:copy-of select="tei:term"/></index>
                            </xsl:otherwise>
                        </xsl:choose>
                    </index>
                </xsl:for-each>
            </div>
        </back>
    </xsl:if>
</xsl:template>
    
<xsl:template match="//tei:back">
    <back xmlns="http://www.tei-c.org/ns/1.0">
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
        <xsl:if test="//tei:index">
            <div xmlns="http://www.tei-c.org/ns/1.0" type="index" xml:id="index">
                <head>Index</head>
                <xsl:for-each select="//tei:index">
                    <xsl:variable name="indexName">
                        <xsl:choose>
                            <xsl:when test="contains(@indexName,':')">
                                <xsl:value-of select="substring-before(@indexName,':')"/>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:value-of select="@indexName"/>
                            </xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <index n="level1">
                        <term><xsl:value-of select="$indexName"/></term>
                        <xsl:choose>
                            <xsl:when test="contains(@indexName,':')">
                                <index n="level2">
                                    <term><xsl:value-of select="substring-after(@indexName,':')"/></term>
                                    <index n="level3" source="{concat('#term',count(./preceding::tei:term) + 1)}"><xsl:copy-of select="tei:term"/></index>
                                </index>
                            </xsl:when>
                            <xsl:otherwise>
                                <index n="level2" source="{concat('#term',count(./preceding::tei:term) + 1)}"><xsl:copy-of select="tei:term"/></index>
                            </xsl:otherwise>
                        </xsl:choose>
                    </index>
                </xsl:for-each>
            </div>
        </xsl:if>
    </back>  
</xsl:template>
    
<xsl:template match="//tei:index">
    <xsl:variable name="termId" select="concat('term',count(./preceding::tei:term) + 1)"/>
    <anchor xmlns="http://www.tei-c.org/ns/1.0" n="{concat('index-',@indexName,':',child::tei:term)}" xml:id="{$termId}"/>
</xsl:template>
    
</xsl:stylesheet>
 No newline at end of file

xsl/tei/02-tei2tei.xsl

0 → 100644
+103 −0
Changes for xsl/tei/02-tei2tei.xsl: 103 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:tei="http://www.tei-c.org/ns/1.0"  
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xmlns:mml="http://www.w3.org/1998/Math/MathML"
  exclude-result-prefixes="tei xsl">
    
<xsl:output method="xml" encoding="UTF-8" indent="no"/>

<!-- Define keys for grouping -->
<xsl:key name="level1-terms" match="//tei:index[@n='level1']/tei:term" use="."/>
<xsl:key name="level2-terms" match="//tei:index[@n='level2']/tei:term" use="."/>
<xsl:key name="level3-terms" match="//tei:index[@n='level3']/tei:term" use="."/>

<xsl:variable name="tree">
    <xsl:copy-of select="/"/>
</xsl:variable>
    
<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="//tei:div[@type='index']">
    <div type="index" xmlns="http://www.tei-c.org/ns/1.0">
        <head>Index</head>
        <xsl:for-each select="//tei:index[@n='level1']/tei:term/text()">
            <xsl:sort select="." data-type="text" order="ascending"/>
            <xsl:if test="not(preceding::tei:term[text() = current()])">
                <xsl:variable name="currentIndex" select="."/>
                <list type="level1" xmlns="http://www.tei-c.org/ns/1.0">
                    <item>
                        <label><xsl:value-of select="$currentIndex"/></label>
                        <xsl:call-template name="findLevel2Occurrences">
                            <xsl:with-param name="currentIndex" select="$currentIndex"/>
                        </xsl:call-template>
                    </item>
                </list>
            </xsl:if>
        </xsl:for-each>
    </div>
</xsl:template>

<xsl:template name="findLevel2Occurrences">
    <xsl:param name="currentIndex"/>
    <xsl:for-each select="//tei:index[@n='level1'][tei:term[text()=$currentIndex]]/tei:index[@n='level2']/tei:term/text()">
        <xsl:sort select="." data-type="text" order="ascending"/>
        <xsl:if test="not(preceding::tei:term[text() = current()])">
            <xsl:variable name="currentTerm" select="."/>
            <xsl:variable name="level2-indexes" select="//tei:index[@n='level1'][tei:term[text()=$currentIndex]]/tei:index[@n='level2'][tei:term[text()=$currentTerm]]"/>
            <list type="level2" xmlns="http://www.tei-c.org/ns/1.0">
                <item>
                    <label><xsl:value-of select="$currentTerm" /></label>
                    <xsl:if test="not(descendant::tei:index[@n='level3'])">
                        <xsl:for-each select="$level2-indexes">
                            <xsl:if test="@source != ''">
                                <ref target="{@source}" type="index"/>
                                <xsl:if test="position() != last()">
                                    <xsl:text>, </xsl:text>
                                </xsl:if>
                            </xsl:if>
                        </xsl:for-each>
                    </xsl:if>
                    <xsl:call-template name="findLevel3Occurrences">
                        <xsl:with-param name="currentIndex" select="$currentIndex"/>
                        <xsl:with-param name="currentTerm" select="$currentTerm"/>
                    </xsl:call-template>
                </item>
            </list>
        </xsl:if>
    </xsl:for-each>
</xsl:template>

<xsl:template name="findLevel3Occurrences">
    <xsl:param name="currentIndex"/>
    <xsl:param name="currentTerm"/>
    <xsl:for-each select="//tei:index[@n='level1'][tei:term[text()=$currentIndex]]/tei:index[@n='level2'][tei:term[text()=$currentTerm]]/tei:index[@n='level3']/tei:term/text()">
        <xsl:sort select="." data-type="text" order="ascending"/>
        <xsl:if test="not(preceding::tei:term[text() = current()])">
            <xsl:variable name="currentIndexTerm3" select="."/>
            <xsl:variable name="level3-indexes" select="//tei:index[@n='level1'][tei:term[text()=$currentIndex]]/tei:index[@n='level2'][tei:term[text()=$currentTerm]]/tei:index[@n='level3'][tei:term[text()=$currentIndexTerm3]]"/>
            <list type="level3" xmlns="http://www.tei-c.org/ns/1.0">
                <item>
                    <label><xsl:value-of select="."/></label>
                    <xsl:for-each select="$level3-indexes">
                        <xsl:if test="@source != ''">
                            <ref target="{@source}" type="index"/>
                            <xsl:if test="position() != last()">
                                <xsl:text>, </xsl:text>
                            </xsl:if>
                        </xsl:if>
                    </xsl:for-each>
                </item>
            </list>
        </xsl:if>
    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>
 No newline at end of file
+837 −0

File added.

Preview size limit exceeded, changes collapsed.