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

    <s2 title="CreateDOMDocument">
        <p>The CreateDOMDocument example illustrates how you can create a DOM tree in
            memory from scratch. It then reports the number of elements in the tree that
            was just created.</p>

        <s3 title="Running CreateDOMDocument">

          <p>The CreateDOMDocument sample illustrates how you can create a DOM tree
             in memory from scratch. To run CreateDOMDocument, enter the following</p>
<source>CreateDOMDocument</source>
          <p>Here is a sample output from CreateDOMDocument</p>
<source>CreateDOMDocument
The tree just created contains: 4 elements.</source>

        </s3>
    </s2>
</s1>
