<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->

<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
  <name>typeSystemDescriptor</name>
  <description/>
  <version>1.0</version>
  <vendor/>
  <types>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.TAG</name>
      <description></description>
      <supertypeName>uima.tcas.Annotation</supertypeName>
      <features>
        <featureDescription>
          <name>name</name>
          <description></description>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>expandedOffsets</name>
          <description></description>
          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
        </featureDescription>
        <featureDescription>
          <name>attributeName</name>
          <description></description>
          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
          <multipleReferencesAllowed>false</multipleReferencesAllowed>
        </featureDescription>
        <featureDescription>
          <name>attributeValue</name>
          <description/>
          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
          <multipleReferencesAllowed>false</multipleReferencesAllowed>
        </featureDescription>
      </features>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.B</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.H1</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.H2</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.H3</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.H4</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.H5</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.H6</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.COMMENT</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.TITLE</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.I</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.U</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.BIG</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.SMALL</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.FONT</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.A</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.HEAD</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.HTML</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.BODY</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.EM</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.TABLE</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.DIV</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.SPAN</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.UL</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.OL</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.P</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.LI</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.TBODY</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.TD</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.TR</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.TH</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.IMG</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.STYLE</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.SCRIPT</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.LINK</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.INPUT</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.FORM</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.META</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.BR</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
    </typeDescription>
    <typeDescription>
      <name>org.apache.uima.ruta.type.html.REMARK</name>
      <description></description>
      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
      <features>
        <featureDescription>
          <name>comment</name>
          <description></description>
          <rangeTypeName>uima.cas.String</rangeTypeName>
        </featureDescription>
      </features>
    </typeDescription>
  </types>
</typeSystemDescription>
