---
name: "stag-autoschema"
section: "1p"
platform: "linux"
package: "libdata-stag-perl"
version: "0.14-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/stag-autoschema"
---

# stag-autoschema(1p)

writes the implicit stag-schema for a stag file

## NAME

stag-autoschema - writes the implicit stag-schema for a stag file

## SYNOPSIS

```
  stag-autoschema -w sxpr sample-data.xml
  stag-autoschema -dtd sample-data.xml
```

## DESCRIPTION

Takes a stag compatible file (xml, sxpr, itext), or a file in any format plus a parser, and writes out the implicit underlying stag-schema

stag-schema should look relatively self-explanatory.

Here is an example stag-schema, shown in sxpr syntax:

```
  (db
   (person*
    (name "s"
    (address+
     (address_type "s")
     (street "s")
     (street2? "s")
     (city "s")
     (zip? "s")))))
```

The database db contains zero or more persons, each person has a mandatory name and at least one address.

The cardinality mnemonics are as follows:

- \+

  1 or more

- ?

  0 or one

- \*

  0 or more

The default cardinality is 1

## ARGUMENTS

- \-p\|parser FORMAT

  FORMAT is one of xml, sxpr or itext, or the name of a perl module

  xml assumed as default

- \-dtd

  exports schema as DTD

- \-w\|writer FORMAT

  FORMAT is one of xml, sxpr or itext, or the name of a perl module, OR DTD

  The default is sxpr

  note that stag schemas exported as xml will be invalid xml, due to the use of symbols \*, +, ? in the node names

## LIMITATIONS

not event based - memory usage becomes exhorbitant on large files; prepare a small sample beforehand
