<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2004 The Apache Software Foundation

     Licensed 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. -->

<jira:testListA xmlns:jira="http://jira/xmlbeans_177a">
  <test a="This is a greater than sign: &gt;"/>
  <test a="This is a less than sign: &lt;"/>
  <test a="This is a single quote: &apos;"/>
  <test a="This is a double quote: &quot;"/>
  <test a="W.L.Gore &amp; Associates"/>
</jira:testListA>
