<?xml version="1.0" standalone="no"?>
<!--
 * 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 s1 SYSTEM "sbk:/style/dtd/document.dtd">

<s1 title="Sample: DOMCount">

    <s2 title="DOMCount">
        <p>DOMCount uses the provided DOM API to parse an XML file,
		construct the DOM tree and walk through the tree counting
		the elements (using just one API call).</p>

        <s3 title="Running DOMCount">

          <p>The DOMCount sample parses an XML file and prints out the number of
          elements in the file. To run DOMCount, enter the following </p>
<source>DOMCount &lt;XML file&gt;</source>
          <p>The following parameters may be set from the command line </p>
<source>
Usage:
    DOMCount [options] &lt;XML file | List file&gt;

This program invokes the DOMLSParser, builds the DOM tree,
and then prints the number of elements found in each XML file.

Options:
    -l          Indicate the input file is a List File that has a list of xml files.
                Default to off (Input file is an XML file).
    -v=xxx      Validation scheme [always | never | auto*].
    -n          Enable namespace processing. Defaults to off.
    -s          Enable schema processing. Defaults to off.
    -f          Enable full schema constraint checking. Defaults to off.
    -d          Disallow doctype. Defaults to off.
    -locale=ll_CC specify the locale, default: en_US
    -p          Print out names of elements and attributes encountered.
    -?          Show this help.

  * = Default if not provided explicitly.
</source>
          <p><em>-v=always</em> will force validation<br/>
             <em>-v=never</em>  will not use any validation<br/>
             <em>-v=auto</em>   will validate if a DOCTYPE declaration or a schema declaration is present in the XML document</p>
          <p>Here is a sample output from DOMCount</p>
<source>cd &XercesC3InstallDir;/samples/data
DOMCount -v=always personal.xml
personal.xml: 20 ms (37 elems)</source>

          <note>The time reported by the system may be different, depending on your
          processor speed.</note>
        </s3>
    </s2>
</s1>
