Convert a RELAX NG Schema to XML Schema

If you like working with RELAX NG but you need XML Schema too, Trang is the answer. Trang converts RELAX NG schemas (in both XML and compact syntax) to XML Schema.

If you are like me, you prefer to work with RELAX NG when developing schemas for XML, but out of necessity you may need to provide schemas in XML Schema format. Trang can help you out because it allows you to translate RELAX NG schemas in XML or compact syntax into XML Schema. This hack shows you how.

Here is the command to convert the RELAX NG schema time.rng (in XML syntax) to newtime.xsd:

java -jar trang.jar time.rng newtime.xsd

Example 5-14 shows the XML Schema that is the result of the translation (newtime.xsd ):

Example 5-14. newtime.xsd

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified">
  <xs:element name="time">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="hour"/>
        <xs:element ref="minute"/>
        <xs:element ref="second"/>
        <xs:element ref="meridiem"/>
        <xs:element ref="atomic"/>
      </xs:sequence>
      <xs:attribute name="timezone" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="hour" type="xs:string"/>
  <xs:element name="minute" type="xs:string"/>
  <xs:element name="second" type="xs:string"/>
  <xs:element name="meridiem" type="xs:string"/>
  <xs:element name="atomic">
    <xs:complexType>
      <xs:attribute name="signal" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

The schema element is the document ...

Get XML Hacks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.