<?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.
-->
<!DOCTYPE faqs SYSTEM 'dtd/faqs.dtd'>
<faqs title='Using XInclude'>

  <faq title="Usage">
    <q>How do I enable XInclude processing?</q>
    <a>
     <p>
      Applications using JAXP 1.3 (and above) can enable XInclude processing 
      by setting XInclude awareness on the parser factory. The following 
      demonstrates how to accomplish this with SAX:
     </p>
     <source>import javax.xml.parsers.SAXParserFactory;
     
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
spf.setXIncludeAware(true);
...  
</source>
     <p>
      You can also enable XInclude processing by turning on the 
      <link idref='features' anchor="xinclude">XInclude feature</link>.
     </p>
    </a>
  </faq>
  
  <faq title="XInclude and validation">
   <q>How do the validation features interact with XInclude processing?</q>
   <a>
    <p>
     If the <link idref='features' anchor="validation">validation feature</link>
     is turned on then DTD validation will be performed on each source document
     (to the XInclude processor) against their respective DTDs.
    </p>
    <p>
     If both the <link idref='features' anchor="validation">validation feature</link>
     and the <link idref='features' anchor="validation.schema">schema validation
     feature</link> are turned on then schema validation will be performed on the
     result infoset generated by the XInclude processor. DTD validation will be
     performed on each source document which contains a DTD. No DTD validation errors
     will be reported for source documents which have no DTD.
    </p>
   </a>
  </faq>

  <faq title="xml:base attributes and XML Schema validation">
    <q>Why are xml:base attributes added, which make Schema validation fail?</q>
    <a>
     <p>
      According to the specification for XInclude, processors must add an <code>xml:base</code>
      attribute to elements included from locations with a different base URI.  Without
      these attributes, the resulting infoset information would be incorrect.  Unfortunately,
      these attributes make XInclude processing not transparent to Schema validation.
     </p>
     <p>
      One solution to this is to modify your schema to allow <code>xml:base</code>
      attributes to appear on elements that might be included from different base URIs.
      There is a similar problem with <code>xml:lang</code> attributes that are added as a result
      of language fixup. If the addition of <code>xml:base</code> and/or <code>xml:lang</code>
      is undesired by your application, you can disable
      <link idref='features' anchor='xinclude.fixup-base-uris'>base URI fixup</link> and 
      <link idref='features' anchor='xinclude.fixup-language'>language fixup</link> so that
      these attributes will not be added.
     </p>
    </a>
  </faq>

  <faq title="XML Base Support">
    <q>Does the XInclude processor recognize xml:base attributes?</q>
    <a> 
     <p>
      Yes. The XInclude specification requires processors to use the base URI
      (as specified in the <jump href="http://www.w3.org/TR/xmlbase/">XML Base</jump>
      recommendation) to resolve relative IRIs to compute the
      <jump href="http://www.w3.org/TR/2006/REC-xinclude-20061115/#include-location">include location</jump>.
      Support for XML Base was added to the XInclude implementation in Xerces-J 2.6.0.
     </p>
    </a>
  </faq>
  
  <faq title="Language Fixup">
    <q>Does the XInclude processor perform language fixup?</q>
    <a>
     <p>
      Yes. The XInclude processor will preserve language information on a top-level included element
      by adding an <code>xml:lang</code> attribute if its include parent has a different [language]
      property. Support for language fixup was added to the XInclude implementation in Xerces-J 2.7.0.
     </p>
    </a>
  </faq>
  
  <faq title="References Property Fixup">
    <q>Does the XInclude processor perform references property fixup?</q>
    <a>
     <p>
      Section <jump href="http://www.w3.org/TR/2006/REC-xinclude-20061115/#references-property">4.5.3</jump>
      of the XInclude 1.0 W3C Recommendation describes fixup of the [references] property 
      of an attribute information item. For IDREF/IDREFS the property contains an ordered
      list of element information items. Xerces provides no mechanism for accessing this 
      property nor does it keep an internal representation. It should be noted that neither 
      the SAX or DOM APIs have native support for the [references] property. For Xerces, 
      references property fixup is a no-op.
     </p>
    </a>
  </faq>
  
  <faq title="Document Fragments">
    <q>Does the XInclude processor support XPointer?</q>
    <a>
     <p>
      Yes. The XInclude processor supports the 
      <jump href="http://www.w3.org/TR/2003/REC-xptr-framework-20030325/">XPointer Framework</jump>
      and the
      <jump href="http://www.w3.org/TR/2003/REC-xptr-element-20030325/">XPointer element() Scheme</jump>.
      The XPointer xpointer() Scheme is currently not supported.
     </p>
    </a>
  </faq>
  
  <faq title="XPointer and IDs">
    <q>What types of IDs are currently supported for XPointers?</q>
    <a>
     <p>
      For shorthand pointers and element() XPointers, currently only 
      <jump href="http://www.w3.org/TR/xptr-framework/#term-ddi">DTD-determined ID</jump>s
      are supported. <jump href="http://www.w3.org/TR/xptr-framework/#term-sdi">schema-determined ID</jump>s
      may be supported in a future release.
     </p>
    </a>
  </faq>
  
  <faq title="Content Negotiation">
    <q>Are the values of the content negotiation attributes used in an HTTP request?</q>
    <a>
     <p>
      Yes, the values of the <code>accept</code> and <code>accept-language</code> attributes 
      from an <jump href="http://www.w3.org/TR/2006/REC-xinclude-20061115/#include_element">include</jump>
      element are included as request properties in an HTTP request. Support for content negotiation 
      when parse="xml" was added to the XInclude implementation in Xerces-J 2.7.0.
     </p>
    </a>
  </faq>
  
  <faq title="The Namespace: 'http://www.w3.org/2003/XInclude'">
    <q>Will the XInclude processor process include elements from the 'http://www.w3.org/2003/XInclude' namespace?</q>
    <a>
     <p>
      No. The namespace for XInclude was changed back to <code>http://www.w3.org/2001/XInclude</code>
      in the <jump href="http://www.w3.org/TR/2004/CR-xinclude-20040413/">Candidate Recommendation (April 2004)</jump>.
      The <code>http://www.w3.org/2003/XInclude</code> namespace is no longer recognized.
     </p>
    </a>
  </faq>
 
</faqs>
