dhodovsk / source-git / pacemaker

Forked from source-git/pacemaker 3 years ago
Clone

Blame xml/upgrade-2.10-leave.xsl

rpm-build 3ee90c
rpm-build 3ee90c
 Copyright 2018 Red Hat, Inc.
rpm-build 3ee90c
 Author: Jan Pokorny <jpokorny@redhat.com>
rpm-build 3ee90c
 Part of pacemaker project
rpm-build 3ee90c
 SPDX-License-Identifier: GPL-2.0-or-later
rpm-build 3ee90c
 -->
rpm-build 3ee90c
rpm-build 3ee90c
                xmlns:cibtr="http://clusterlabs.org/ns/pacemaker/cibtr-2"
rpm-build 3ee90c
                exclude-result-prefixes="cibtr"
rpm-build 3ee90c
		cibtr:filename="upgrade-2.10-leave.xsl">
rpm-build 3ee90c
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
rpm-build 3ee90c
rpm-build 3ee90c
<xsl:param name="cibtr:label-debug"   select="'DEBUG: '"/>
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
 GENERIC UTILITIES
rpm-build 3ee90c
rpm-build 3ee90c
 -->
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
 Recursive implementation of "basename"
rpm-build 3ee90c
rpm-build 3ee90c
 Merely parameter driven, no implicit context taken into account:
rpm-build 3ee90c
 - Uri: input in it's current phase of processing
rpm-build 3ee90c
-->
rpm-build 3ee90c
<xsl:template name="cibtr:WrapSpecificBasename">
rpm-build 3ee90c
  <xsl:param name="Uri"/>
rpm-build 3ee90c
  <xsl:choose>
rpm-build 3ee90c
    <xsl:when test="not(contains($Uri, '/'))">
rpm-build 3ee90c
      <xsl:value-of select="$Uri"/>
rpm-build 3ee90c
    </xsl:when>
rpm-build 3ee90c
    <xsl:otherwise>
rpm-build 3ee90c
      <xsl:call-template name="cibtr:WrapSpecificBasename">
rpm-build 3ee90c
        
rpm-build 3ee90c
                        select="substring-after($Uri, '/')"/>
rpm-build 3ee90c
      </xsl:call-template>
rpm-build 3ee90c
    </xsl:otherwise>
rpm-build 3ee90c
  </xsl:choose>
rpm-build 3ee90c
</xsl:template>
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
 Id-mangling-enriched identity template.
rpm-build 3ee90c
 -->
rpm-build 3ee90c
<xsl:template name="cibtr:HelperIdentityLeave">
rpm-build 3ee90c
  <xsl:copy>
rpm-build 3ee90c
    <xsl:apply-templates select="@*|node()" mode="cibtr:leave"/>
rpm-build 3ee90c
  </xsl:copy>
rpm-build 3ee90c
</xsl:template>
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
 ACTUAL TRANSFORMATION
rpm-build 3ee90c
rpm-build 3ee90c
 Extra modes: cibtr:leave
rpm-build 3ee90c
              cibtr:leave-serialize
rpm-build 3ee90c
rpm-build 3ee90c
 -->
rpm-build 3ee90c
rpm-build 3ee90c
<xsl:variable name="cibtr:WrapSpecificPrefix">
rpm-build 3ee90c
  
rpm-build 3ee90c
  <xsl:call-template name="cibtr:WrapSpecificBasename">
rpm-build 3ee90c
    
rpm-build 3ee90c
      select="namespace-uri(document('')/xsl:stylesheet/@cibtr:filename)"/>
rpm-build 3ee90c
  </xsl:call-template>
rpm-build 3ee90c
</xsl:variable>
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
              select="concat('_', $cibtr:WrapSpecificPrefix, '_')"/>
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
 cibtr:leave-serialize mode
rpm-build 3ee90c
 -->
rpm-build 3ee90c
rpm-build 3ee90c
<xsl:template match="@*|node()" mode="cibtr:leave-serialize">
rpm-build 3ee90c
  <xsl:choose>
rpm-build 3ee90c
    
rpm-build 3ee90c
                    and
rpm-build 3ee90c
                    name() = 'id'">
rpm-build 3ee90c
      
rpm-build 3ee90c
    </xsl:when>
rpm-build 3ee90c
    
rpm-build 3ee90c
                    or
rpm-build 3ee90c
                    self::processing-instruction()">
rpm-build 3ee90c
      <xsl:variable name="Mark">
rpm-build 3ee90c
        <xsl:if test="count(.|../@*)=count(../@*)">A</xsl:if>
rpm-build 3ee90c
        <xsl:if test="self::processing-instruction()">P</xsl:if>
rpm-build 3ee90c
      </xsl:variable>
rpm-build 3ee90c
      <xsl:value-of select="concat($Mark, '(', name(), '=', ., '),')"/>
rpm-build 3ee90c
    </xsl:when>
rpm-build 3ee90c
    <xsl:when test="self::*">
rpm-build 3ee90c
      <xsl:value-of select="concat('E(', name(), ',')"/>
rpm-build 3ee90c
      
rpm-build 3ee90c
                           mode="cibtr:leave-serialize"/>
rpm-build 3ee90c
      <xsl:value-of select="'),'"/>
rpm-build 3ee90c
    </xsl:when>
rpm-build 3ee90c
    <xsl:when test="self::comment()|self::text()">
rpm-build 3ee90c
      <xsl:variable name="Mark">
rpm-build 3ee90c
        <xsl:if test="self::comment()">C</xsl:if>
rpm-build 3ee90c
        <xsl:if test="self::text()">T</xsl:if>
rpm-build 3ee90c
      </xsl:variable>
rpm-build 3ee90c
      <xsl:value-of select="concat($Mark, '(', ., '),')"/>
rpm-build 3ee90c
    </xsl:when>
rpm-build 3ee90c
  </xsl:choose>
rpm-build 3ee90c
</xsl:template>
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
 cibtr:leave mode
rpm-build 3ee90c
 -->
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
 This is to cover elements with the internal structure characterized
rpm-build 3ee90c
 with the following RelaxNG Compact encoded grammar:
rpm-build 3ee90c
rpm-build 3ee90c
 > attribute id-ref { xsd:IDREF }
rpm-build 3ee90c
 > | (attribute id { xsd:ID },
rpm-build 3ee90c
 >    (rule?
rpm-build 3ee90c
 >     & nvpair*
rpm-build 3ee90c
 >     & attribute score {
rpm-build 3ee90c
 >         xsd:integer
rpm-build 3ee90c
 >         | xsd:token "INFINITY"
rpm-build 3ee90c
 >         | xsd:token "+INFINITY"
rpm-build 3ee90c
 >         | xsd:token "-INFINITY"
rpm-build 3ee90c
 >       }?))
rpm-build 3ee90c
rpm-build 3ee90c
 The context node corresponds to "@id-ref" branch prior to unfolding
rpm-build 3ee90c
 in the preceding "unfold" XSLT counterpart, and Original to the other,
rpm-build 3ee90c
 and the task here is to recursively (and deterministically) compare
rpm-build 3ee90c
 the content of the two, and when there's a match, to collapse the
rpm-build 3ee90c
 former back to a mere empty @id-ref link.
rpm-build 3ee90c
rpm-build 3ee90c
 NOTE: name of this template may be a bit misleading, but it's meant
rpm-build 3ee90c
       to really mean "after upgrade of the same trailing numbers",
rpm-build 3ee90c
       which effectively means we are playing per 3.X CIB schema
rpm-build 3ee90c
       rules, which needs to be considered, should any element be
rpm-build 3ee90c
       renamed, etc.
rpm-build 3ee90c
 -->
rpm-build 3ee90c
rpm-build 3ee90c
                       contains(
rpm-build 3ee90c
                         concat('|cluster_property_set',
rpm-build 3ee90c
                                '|instance_attributes|',
rpm-build 3ee90c
                                '|meta_attributes|'),
rpm-build 3ee90c
                         concat('|', name(), '|')
rpm-build 3ee90c
                       )
rpm-build 3ee90c
                     ]"
rpm-build 3ee90c
              mode="cibtr:leave">
rpm-build 3ee90c
  
rpm-build 3ee90c
                select="//*[
rpm-build 3ee90c
                          name() = name(current())
rpm-build 3ee90c
                          and
rpm-build 3ee90c
                          @id = substring-after(current()/@id,
rpm-build 3ee90c
                                                $cibtr:WrapSpecificPrefixInitialRoot)
rpm-build 3ee90c
                        ]"/>
rpm-build 3ee90c
  <xsl:choose>
rpm-build 3ee90c
    
rpm-build 3ee90c
                      starts-with(@id, $cibtr:WrapSpecificPrefixInitialRoot)
rpm-build 3ee90c
                    )">
rpm-build 3ee90c
      <xsl:copy>
rpm-build 3ee90c
        
rpm-build 3ee90c
                             mode="cibtr:leave"/>
rpm-build 3ee90c
      </xsl:copy>
rpm-build 3ee90c
    </xsl:when>
rpm-build 3ee90c
    <xsl:when test="count($Original) = 0">
rpm-build 3ee90c
      <xsl:if test="string($cibtr:label-debug) != string(false())">
rpm-build 3ee90c
        <xsl:message>
rpm-build 3ee90c
          
rpm-build 3ee90c
                                       ': original element pointed to with',
rpm-build 3ee90c
                                       ' @id-ref (',
rpm-build 3ee90c
                                       substring-after(@id,
rpm-build 3ee90c
                                                       $cibtr:WrapSpecificPrefixInitialRoot),
rpm-build 3ee90c
                                       ') disappeared during upgrade')"/>
rpm-build 3ee90c
        </xsl:message>
rpm-build 3ee90c
      </xsl:if>
rpm-build 3ee90c
      <xsl:copy>
rpm-build 3ee90c
        
rpm-build 3ee90c
                             mode="cibtr:leave"/>
rpm-build 3ee90c
      </xsl:copy>
rpm-build 3ee90c
    </xsl:when>
rpm-build 3ee90c
    <xsl:when test="count($Original) != 1">
rpm-build 3ee90c
      <xsl:message terminate="yes">
rpm-build 3ee90c
        
rpm-build 3ee90c
                                     name(), ': found several elements',
rpm-build 3ee90c
                                     ' that possibly were originally',
rpm-build 3ee90c
                                     ' pointed to with @id-ref (',
rpm-build 3ee90c
                                     substring-after(@id,
rpm-build 3ee90c
                                                     $cibtr:WrapSpecificPrefixInitialRoot),
rpm-build 3ee90c
                                     '); unexpected ambiguity')"/>
rpm-build 3ee90c
      </xsl:message>
rpm-build 3ee90c
    </xsl:when>
rpm-build 3ee90c
    <xsl:otherwise>
rpm-build 3ee90c
      <xsl:variable name="SerializedOriginal">
rpm-build 3ee90c
        
rpm-build 3ee90c
                                     |$Original/node()"
rpm-build 3ee90c
                             mode="cibtr:leave-serialize"/>
rpm-build 3ee90c
      </xsl:variable>
rpm-build 3ee90c
      <xsl:variable name="SerializedDependant">
rpm-build 3ee90c
        
rpm-build 3ee90c
                                     |node()"
rpm-build 3ee90c
                             mode="cibtr:leave-serialize"/>
rpm-build 3ee90c
      </xsl:variable>
rpm-build 3ee90c
      <xsl:copy>
rpm-build 3ee90c
        <xsl:choose>
rpm-build 3ee90c
          <xsl:when test="$SerializedOriginal = $SerializedDependant">
rpm-build 3ee90c
            <xsl:attribute name="id-ref">
rpm-build 3ee90c
              
rpm-build 3ee90c
                                                    $cibtr:WrapSpecificPrefixInitialRoot)"/>
rpm-build 3ee90c
            </xsl:attribute>
rpm-build 3ee90c
          </xsl:when>
rpm-build 3ee90c
          <xsl:otherwise>
rpm-build 3ee90c
            
rpm-build 3ee90c
                                 mode="cibtr:leave">
rpm-build 3ee90c
            </xsl:apply-templates>
rpm-build 3ee90c
          </xsl:otherwise>
rpm-build 3ee90c
        </xsl:choose>
rpm-build 3ee90c
      </xsl:copy>
rpm-build 3ee90c
    </xsl:otherwise>
rpm-build 3ee90c
  </xsl:choose>
rpm-build 3ee90c
</xsl:template>
rpm-build 3ee90c
rpm-build 3ee90c
<xsl:template match="@*|node()" mode="cibtr:leave">
rpm-build 3ee90c
  <xsl:call-template name="cibtr:HelperIdentityLeave"/>
rpm-build 3ee90c
</xsl:template>
rpm-build 3ee90c
rpm-build 3ee90c
rpm-build 3ee90c
<xsl:template match="/">
rpm-build 3ee90c
  <xsl:call-template name="cibtr:HelperIdentityLeave"/>
rpm-build 3ee90c
</xsl:template>
rpm-build 3ee90c
rpm-build 3ee90c
</xsl:stylesheet>