---
name: "trang"
section: "1"
platform: "linux"
package: "trang"
version: "20241231+repack-1~deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/trang"
---

# trang(1)

convert between different schema languages for XML

## NAME

trang - convert between different schema languages for XML

## SYNOPSIS

**trang** \[**-I** **rng**\|**rnc**\|**dtd**\|**xml**\] \[**-O** **rng**\|**rnc**\|**dtd**\|**xsd**\] \[**-i** *input-param*\] \[**-o** *output-param*\] *input-file* ... *output-file*

## DESCRIPTION

**trang** takes as input a schema written in any of the following formats:

-

  RELAX NG (XML syntax)

-

  RELAX NG (compact syntax)

-

  XML 1.0 DTD

and produces as output a schema written in any of the following formats:

-

  RELAX NG (XML syntax)

-

  RELAX NG (compact syntax)

-

  XML 1.0 DTD

-

  W3C XML Schema

Trang can also infer a schema from one or more example XML documents.

Trang uses an internal representation based on RELAX NG.  For each supported input format, there is an input module that converts a schema in that input format into this internal representation.  For each supported output format, there is an output module that converts the internal representation into a schema in that output format. Thus, any supported input format can be translated to any supported output format.

Trang requires two command-line arguments: the first is the URI or filename of the schema to be translated; the second is the output filename.

Trang infers the input and output modules to be used from the extension of input and output filenames as follows:

- **.rng**

  RELAX NG (XML syntax)

- **.rnc**

  RELAX NG (compact syntax)

- **.dtd**

  XML 1.0 DTD

- **.xsd**

  W3C XML Schema

- **.xml**

  XML documents (used as examples from which to infer a schema)

This inference can be overridden using the  **-I** and **-O** options.

When the input is XML documents used as examples to infer a schema, more than one input file may be specified as arguments.  All the input files are specified before the output file.

## OPTIONS

- **-I rng**\|**rnc**\|**dtd**\|**xml**

  Specifies which input module to use.

- **-O rng**\|**rnc**\|**dtd**\|**xsd**

  Specifies which output module to use.

- **-i** *input-param*

  - **-o** *output-param*

  Specifies a parameter for an input (**-i**) or output (**-o**) module. The **-i** and **-o** options may be used multiple times in order to specify multiple parameters.  There are two kinds of parameter: boolean parameters and string-valued parameters.  A string-valued parameter is specified using the form *name***=***value.* A boolean parameter is specified using the form *name* or **no-***name.* The applicable parameters depend on the particular input and output module. For details, see the HTML documentation.

## SEE ALSO

[**jing**(1)](/jing/1.md)

Trang Manual

http://relaxng.org

## AUTHOR

James Clark (jjc@jclark.com)

This product includes software developed by the Apache Software Foundation (http://www.apache.org/).
