<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<model xmlns="http://modello.codehaus.org/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.4.0 http://modello.codehaus.org/xsd/modello-1.4.0.xsd">
  
  <!-- Source: http://www.jcoderz.org/fawkez/browser/trunk/src/xml/schema/cpd.xsd -->
  
  <name>Cpd</name>
  
  <defaults>
    <default>
      <key>package</key>
      <value>org.apache.maven.plugin.pmd.model</value>
    </default>
  </defaults>
  <versionDefinition>
    <type>namespace</type>
    <value>1.0+</value>
  </versionDefinition>
  
  <classes>
    <class xml.tagName="pmd-cpd" rootElement="true">
      <name>CpdErrorDetail</name>
      <fields>
        <field>
          <name>duplications</name>
          <association xml.tagName="duplication" xml.itemsStyle="flat">
            <type>Duplication</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
      </fields>
    </class>
    <class>
      <name>Duplication</name>
      <fields>
        <field xml.attribute="true">
          <name>lines</name>
          <type>int</type>
        </field>
        <field xml.attribute="true">
          <name>tokens</name>
          <type>int</type>
        </field>
        <field xml.tagName="file">
          <name>files</name>
          <association xml.tagName="file" xml.itemsStyle="flat">
            <type>CpdFile</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <field>
          <name>codefragment</name>
          <type>String</type>
        </field>
      </fields>
    </class>
    <class xml.tagName="file">
      <name>CpdFile</name>
      <fields>
        <field xml.attribute="true">
          <name>line</name>
          <type>int</type>
        </field>
        <field xml.attribute="true">
          <name>path</name>
          <type>String</type>
        </field>
      </fields>
    </class>
  </classes>
</model>