<commit_before><?xml version="1.0" encoding="UTF-8" ?>
<xs:schema targetNamespace="http://windup.jboss.org/schema/jboss-ruleset" xmlns="http://windup.jboss.org/schema/jboss-ruleset" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified">


    <!-- Root element. -->
    <xs:element name="ruleset">
        <xs:annotation>
            <xs:documentation>Root element of Windup ruleset.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="metadata" maxOccurs="unbounded" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="dependencies">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="addon" minOccurs="1" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute type="xs:string" name="id" use="optional" />
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="sourceTechnology" type="technology" maxOccurs="unbounded" minOccurs="0" />
                            <xs:element name="targetTechnology" type="technology" maxOccurs="unbounded" minOccurs="0" />
                            <xs:element name="phase" type="phase" maxOccurs="1" minOccurs="0" />
                            <xs:element name="executeAfter" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
                            <xs:element name="executeBefore" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
                            <xs:element name="tag" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="rules" minOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="rule" minOccurs="0" maxOccurs="unbounded" type="rule" />
                            <xs:element name="file-mapping" type="mapping" minOccurs="0" maxOccurs="unbounded" />
                            <xs:element name="package-mapping" type="mapping" minOccurs="0" maxOccurs="unbounded" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="package-mapping" type="mapping" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="file-mapping" type="mapping" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="id" use="optional" />
            <xs:attribute type="xs:string" name="phase" use="optional" />
        </xs:complexType>
    </xs:element>

    <xs:complexType name="rule">
        <xs:sequence>
            <xs:element name="when" type="when" />
            <xs:element name="perform" type="iteration">
            </xs:element>
            <xs:element name="otherwise" type="iteration" minOccurs="0" maxOccurs="1" />
            <xs:element name="where" type="where" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
        <xs:attribute type="xs:string" name="id" use="optional" />
    </xs:complexType>


    <!-- CONDITION DEFINITIONS -->


    <!-- JavaClass -->
    <xs:element name="javaclass">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element type="xs:string" name="location" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="references" />
            <xs:attribute type="xs:string" name="matchesSource" />
            <xs:attribute type="xs:string" name="as" use="optional" />
            <xs:attribute type="xs:string" name="from" use="optional" />
            <xs:attribute type="xs:string" name="in" use="optional" />
        </xs:complexType>
    </xs:element>

    <!-- XmlFile -->
    <xs:element name="xmlfile">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="namespace" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="as" use="optional" />
            <xs:attribute type="xs:string" name="xpathResultMatch" use="optional" />
            <xs:attribute type="xs:string" name="matches" use="optional" />
            <xs:attribute type="xs:string" name="public-id" use="optional" />
            <xs:attribute type="xs:string" name="in" use="optional" />
            <xs:attribute type="xs:string" name="from" use="optional" />
        </xs:complexType>
    </xs:element>

    <xs:element name="namespace">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:string" name="prefix" use="optional" />
                    <xs:attribute type="xs:anyURI" name="uri" use="optional" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <!-- Project -->
    <xs:element name="project">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="artifact">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:string">
                                <xs:attribute type="xs:string" name="groupId" />
                                <xs:attribute type="xs:string" name="artifactId" />
                                <xs:attribute type="xs:string" name="fromVersion" />
                                <xs:attribute type="xs:string" name="toVersion" />
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="filecontent">
        <xs:complexType>
            <xs:attribute type="xs:string" name="pattern" />
            <xs:attribute type="xs:string" name="filename" />
        </xs:complexType>
    </xs:element>

    <xs:element name="has-classification">
        <xs:complexType>
            <xs:attribute type="xs:string" name="title" use="optional" />
        </xs:complexType>
    </xs:element>
    <xs:element name="has-hint">
        <xs:complexType>
            <xs:attribute type="xs:string" name="message" use="optional" />
        </xs:complexType>
    </xs:element>

    <!-- OPERATION DEFINITIONS -->

    <!-- Hint -->
    <xs:element name="hint">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element name="message" minOccurs="0" maxOccurs="1" type="xs:string" />
                <xs:element ref="link" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="tag" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="title" use="optional" />
            <xs:attribute type="xs:string" name="severity" use="optional" />
            <xs:attribute type="xs:string" name="in" use="optional" />
            <xs:attribute type="xs:byte" name="effort" use="optional" />
        </xs:complexType>
    </xs:element>

    <!-- Classification -->
    <xs:element name="classification">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element ref="link" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="tag" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
                <xs:element name="description" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="title" />
            <xs:attribute type="xs:byte" name="effort" use="optional" />
            <xs:attribute type="xs:string" name="severity" use="optional" />
            <xs:attribute type="xs:string" name="of" use="optional" />
        </xs:complexType>
    </xs:element>

    <xs:element name="link">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:anyURI" name="href" />
                    <xs:attribute type="xs:string" name="title" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="log"><commit_msg>Description should always be the first element<commit_after><?xml version="1.0" encoding="UTF-8" ?>
<xs:schema targetNamespace="http://windup.jboss.org/schema/jboss-ruleset" xmlns="http://windup.jboss.org/schema/jboss-ruleset" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified">


    <!-- Root element. -->
    <xs:element name="ruleset">
        <xs:annotation>
            <xs:documentation>Root element of Windup ruleset.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="metadata" maxOccurs="unbounded" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="dependencies">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="addon" minOccurs="1" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute type="xs:string" name="id" use="optional" />
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="sourceTechnology" type="technology" maxOccurs="unbounded" minOccurs="0" />
                            <xs:element name="targetTechnology" type="technology" maxOccurs="unbounded" minOccurs="0" />
                            <xs:element name="phase" type="phase" maxOccurs="1" minOccurs="0" />
                            <xs:element name="executeAfter" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
                            <xs:element name="executeBefore" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
                            <xs:element name="tag" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="rules" minOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="rule" minOccurs="0" maxOccurs="unbounded" type="rule" />
                            <xs:element name="file-mapping" type="mapping" minOccurs="0" maxOccurs="unbounded" />
                            <xs:element name="package-mapping" type="mapping" minOccurs="0" maxOccurs="unbounded" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="package-mapping" type="mapping" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="file-mapping" type="mapping" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="id" use="optional" />
            <xs:attribute type="xs:string" name="phase" use="optional" />
        </xs:complexType>
    </xs:element>

    <xs:complexType name="rule">
        <xs:sequence>
            <xs:element name="when" type="when" />
            <xs:element name="perform" type="iteration">
            </xs:element>
            <xs:element name="otherwise" type="iteration" minOccurs="0" maxOccurs="1" />
            <xs:element name="where" type="where" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
        <xs:attribute type="xs:string" name="id" use="optional" />
    </xs:complexType>


    <!-- CONDITION DEFINITIONS -->


    <!-- JavaClass -->
    <xs:element name="javaclass">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element type="xs:string" name="location" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="references" />
            <xs:attribute type="xs:string" name="matchesSource" />
            <xs:attribute type="xs:string" name="as" use="optional" />
            <xs:attribute type="xs:string" name="from" use="optional" />
            <xs:attribute type="xs:string" name="in" use="optional" />
        </xs:complexType>
    </xs:element>

    <!-- XmlFile -->
    <xs:element name="xmlfile">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="namespace" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="as" use="optional" />
            <xs:attribute type="xs:string" name="xpathResultMatch" use="optional" />
            <xs:attribute type="xs:string" name="matches" use="optional" />
            <xs:attribute type="xs:string" name="public-id" use="optional" />
            <xs:attribute type="xs:string" name="in" use="optional" />
            <xs:attribute type="xs:string" name="from" use="optional" />
        </xs:complexType>
    </xs:element>

    <xs:element name="namespace">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:string" name="prefix" use="optional" />
                    <xs:attribute type="xs:anyURI" name="uri" use="optional" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <!-- Project -->
    <xs:element name="project">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="artifact">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:string">
                                <xs:attribute type="xs:string" name="groupId" />
                                <xs:attribute type="xs:string" name="artifactId" />
                                <xs:attribute type="xs:string" name="fromVersion" />
                                <xs:attribute type="xs:string" name="toVersion" />
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="filecontent">
        <xs:complexType>
            <xs:attribute type="xs:string" name="pattern" />
            <xs:attribute type="xs:string" name="filename" />
        </xs:complexType>
    </xs:element>

    <xs:element name="has-classification">
        <xs:complexType>
            <xs:attribute type="xs:string" name="title" use="optional" />
        </xs:complexType>
    </xs:element>
    <xs:element name="has-hint">
        <xs:complexType>
            <xs:attribute type="xs:string" name="message" use="optional" />
        </xs:complexType>
    </xs:element>

    <!-- OPERATION DEFINITIONS -->

    <!-- Hint -->
    <xs:element name="hint">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element name="message" minOccurs="0" maxOccurs="1" type="xs:string" />
                <xs:element ref="link" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="tag" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="title" use="optional" />
            <xs:attribute type="xs:string" name="severity" use="optional" />
            <xs:attribute type="xs:string" name="in" use="optional" />
            <xs:attribute type="xs:byte" name="effort" use="optional" />
        </xs:complexType>
    </xs:element>

    <!-- Classification -->
    <xs:element name="classification">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element name="description" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
                <xs:element ref="link" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="tag" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="title" />
            <xs:attribute type="xs:byte" name="effort" use="optional" />
            <xs:attribute type="xs:string" name="severity" use="optional" />
            <xs:attribute type="xs:string" name="of" use="optional" />
        </xs:complexType>
    </xs:element>

    <xs:element name="link">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:anyURI" name="href" />
                    <xs:attribute type="xs:string" name="title" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="log">
{'fraction_non_alphanumeric': 0.15703637280726335, 'fraction_numerical': 0.004259373423751611, 'mean_word_length': 1.8628268891384565, 'pattern_counts': {'":': 0, '<': 349, '<?xml version=': 2, '>': 349, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 8}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 20, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3005568', 'n_tokens_mistral': 5076, 'n_tokens_neox': 4861, 'n_words': 799}