<?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: SAX2Count">

    <s2 title="SAX2Count">
        <p>SAX2Count is a simple application that counts the elements and characters of
        a given XML file using the (event based) SAX2 API.</p>

        <s3 title="Running SAX2Count">

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

This program invokes the SAX2XMLReader, and then prints the
number of elements, attributes, spaces and characters found
in each XML file, using SAX2 API.

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*].
    -f          Enable full schema constraint checking processing. Defaults to off.
    -n          Disable namespace processing. Defaults to on.
                NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.
    -s          Disable schema processing. Defaults to on.
                NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.
    -locale=ll_CC specify the locale, default: en_US
    -?          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 SAX2Count</p>
<source>cd &XercesC3InstallDir;/samples/data
SAX2Count -v=always personal.xml
personal.xml: 60 ms (37 elems, 12 attrs, 134 spaces, 134 chars)</source>
          <p>Running SAX2Count with the validating parser gives a different result because
          ignorable white-space is counted separately from regular characters.</p>
<source>SAX2Count -v=never personal.xml
personal.xml: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)</source>
          <p>Note that the sum of spaces and characters in both versions is the same.</p>

          <note>The time reported by the program may be different depending on your
          processor speed.</note>
        </s3>

    </s2>
</s1>
