R
Roedy Green
Here is a schema generated from the DTD for JNLP 6.
It looks similar to XSD, but not quite. What is it?
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Schema for a JNLP 6.0 -->
<xs:element name="all-permissions" type="xs:string" />
<xs:element name="applet-desc">
<xs:complexType>
<xs:sequence>
<xs:element ref="param" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="height" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="main-class" type="xs:string" use="required"
/>
<xs:attribute name="width" type="xs:string" use="required" />
<xs:attribute name="documentbase" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="application-desc">
<xs:complexType>
<xs:sequence>
<xs:element ref="argument" minOccurs="0" maxOccurs="unbounded"
/>
</xs:sequence>
<xs:attribute name="main-class" type="xs:string" use="optional"
/>
</xs:complexType>
</xs:element>
<xs:element name="argument">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="association">
<xs:complexType>
<xs:sequence>
<xs:element ref="description" minOccurs="0" />
<xs:element ref="icon" minOccurs="0" />
</xs:sequence>
<xs:attribute name="extensions" type="xs:string" use="required"
/>
<xs:attribute name="mime-type" type="xs:string" use="required"
/>
</xs:complexType>
</xs:element>
<xs:element name="component-desc" type="xs:string" />
<xs:element name="description">
<xs:complexType mixed="true">
<xs:attribute name="kind" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="one-line" />
<xs:enumeration value="short" />
<xs:enumeration value="tooltip" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="desktop" type="xs:string" />
<xs:element name="ext-download">
<xs:complexType>
<xs:attribute name="download" use="optional" default="eager">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="lazy" />
<xs:enumeration value="eager" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="part" type="xs:string" use="optional" />
<xs:attribute name="ext-part" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="extension">
<xs:complexType>
<xs:sequence>
<xs:element ref="ext-download" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="homepage">
<xs:complexType>
<xs:attribute name="href" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="icon">
<xs:complexType>
<xs:attribute name="height" type="xs:string" use="optional" />
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="required" />
<xs:attribute name="size" type="xs:string" use="optional" />
<xs:attribute name="kind" type="xs:string" use="optional" />
<xs:attribute name="width" type="xs:string" use="optional" />
<xs:attribute name="depth" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="information">
<xs:complexType>
<xs:sequence>
<xs:element ref="title" />
<xs:element ref="vendor" />
<xs:element ref="homepage" minOccurs="0" />
<xs:element ref="description" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="icon" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="offline-allowed" minOccurs="0" />
<xs:element ref="shortcut" minOccurs="0" />
<xs:element ref="association" minOccurs="0" />
<xs:element ref="related-content" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="locale" type="xs:string" use="optional" />
<xs:attribute name="platform" type="xs:string" use="optional" />
<xs:attribute name="arch" type="xs:string" use="optional" />
<xs:attribute name="os" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="installer-desc">
<xs:complexType>
<xs:attribute name="main-class" type="xs:string" use="optional"
/>
</xs:complexType>
</xs:element>
<xs:element name="j2ee-application-client-permissions"
type="xs:string" />
<xs:element name="j2se">
<xs:complexType>
<xs:sequence>
<xs:element ref="resources" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="required" />
<xs:attribute name="href" type="xs:string" use="optional" />
<xs:attribute name="max-heap-size" type="xs:string"
use="optional" />
<xs:attribute name="java-vm-args" type="xs:string"
use="optional" />
<xs:attribute name="initial-heap-size" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="jar">
<xs:complexType>
<xs:attribute name="main" use="optional" default="false">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="download" use="optional" default="eager">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="eager" />
<xs:enumeration value="lazy" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="required" />
<xs:attribute name="part" type="xs:string" use="optional" />
<xs:attribute name="size" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="java">
<xs:complexType>
<xs:sequence>
<xs:element ref="resources" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="required" />
<xs:attribute name="href" type="xs:string" use="optional" />
<xs:attribute name="max-heap-size" type="xs:string"
use="optional" />
<xs:attribute name="java-vm-args" type="xs:string"
use="optional" />
<xs:attribute name="initial-heap-size" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="jnlp">
<xs:complexType>
<xs:sequence>
<xs:element ref="information" maxOccurs="unbounded" />
<xs:element ref="security" minOccurs="0" />
<xs:element ref="update" minOccurs="0" />
<xs:element ref="resources" minOccurs="0"
maxOccurs="unbounded" />
<xs:choice>
<xs:element ref="application-desc" />
<xs:element ref="applet-desc" />
<xs:element ref="component-desc" />
<xs:element ref="installer-desc" />
</xs:choice>
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="optional" />
<xs:attribute name="spec" type="xs:string" use="optional" />
<xs:attribute name="codebase" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="menu">
<xs:complexType>
<xs:attribute name="submenu" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="nativelib">
<xs:complexType>
<xs:attribute name="download" use="optional" default="eager">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="eager" />
<xs:enumeration value="lazy" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="required" />
<xs:attribute name="part" type="xs:string" use="optional" />
<xs:attribute name="size" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="offline-allowed" type="xs:string" />
<xs:element name="package">
<xs:complexType>
<xs:attribute name="recursive" use="optional" default="false">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="part" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="param">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="property">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="related-content">
<xs:complexType>
<xs:sequence>
<xs:element ref="title" minOccurs="0" />
<xs:element ref="description" minOccurs="0" />
<xs:element ref="icon" minOccurs="0" />
</xs:sequence>
<xs:attribute name="href" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="resources">
<xs:complexType>
<xs:choice>
<xs:element ref="java" />
<xs:element ref="j2se" />
<xs:element ref="jar" />
<xs:element ref="nativelib" />
<xs:element ref="extension" />
<xs:element ref="property" />
<xs:element ref="package" />
</xs:choice>
<xs:attribute name="locale" type="xs:string" use="optional" />
<xs:attribute name="arch" type="xs:string" use="optional" />
<xs:attribute name="os" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="security">
<xs:complexType>
<xs:sequence>
<xs:element ref="all-permissions" minOccurs="0" />
<xs:element ref="j2ee-application-client-permissions"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="shortcut">
<xs:complexType>
<xs:sequence>
<xs:element ref="desktop" minOccurs="0" />
<xs:element ref="menu" minOccurs="0" />
</xs:sequence>
<xs:attribute name="online" use="optional" default="true">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="title">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="update">
<xs:complexType>
<xs:attribute name="check" use="optional" default="timeout">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="always" />
<xs:enumeration value="timeout" />
<xs:enumeration value="background" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="policy" use="optional" default="always">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="always" />
<xs:enumeration value="prompt-update" />
<xs:enumeration value="prompt-run" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="vendor">
<xs:complexType mixed="true" />
</xs:element>
</xs:schema>
It looks similar to XSD, but not quite. What is it?
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Schema for a JNLP 6.0 -->
<xs:element name="all-permissions" type="xs:string" />
<xs:element name="applet-desc">
<xs:complexType>
<xs:sequence>
<xs:element ref="param" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="height" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="main-class" type="xs:string" use="required"
/>
<xs:attribute name="width" type="xs:string" use="required" />
<xs:attribute name="documentbase" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="application-desc">
<xs:complexType>
<xs:sequence>
<xs:element ref="argument" minOccurs="0" maxOccurs="unbounded"
/>
</xs:sequence>
<xs:attribute name="main-class" type="xs:string" use="optional"
/>
</xs:complexType>
</xs:element>
<xs:element name="argument">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="association">
<xs:complexType>
<xs:sequence>
<xs:element ref="description" minOccurs="0" />
<xs:element ref="icon" minOccurs="0" />
</xs:sequence>
<xs:attribute name="extensions" type="xs:string" use="required"
/>
<xs:attribute name="mime-type" type="xs:string" use="required"
/>
</xs:complexType>
</xs:element>
<xs:element name="component-desc" type="xs:string" />
<xs:element name="description">
<xs:complexType mixed="true">
<xs:attribute name="kind" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="one-line" />
<xs:enumeration value="short" />
<xs:enumeration value="tooltip" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="desktop" type="xs:string" />
<xs:element name="ext-download">
<xs:complexType>
<xs:attribute name="download" use="optional" default="eager">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="lazy" />
<xs:enumeration value="eager" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="part" type="xs:string" use="optional" />
<xs:attribute name="ext-part" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="extension">
<xs:complexType>
<xs:sequence>
<xs:element ref="ext-download" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="homepage">
<xs:complexType>
<xs:attribute name="href" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="icon">
<xs:complexType>
<xs:attribute name="height" type="xs:string" use="optional" />
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="required" />
<xs:attribute name="size" type="xs:string" use="optional" />
<xs:attribute name="kind" type="xs:string" use="optional" />
<xs:attribute name="width" type="xs:string" use="optional" />
<xs:attribute name="depth" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="information">
<xs:complexType>
<xs:sequence>
<xs:element ref="title" />
<xs:element ref="vendor" />
<xs:element ref="homepage" minOccurs="0" />
<xs:element ref="description" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="icon" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="offline-allowed" minOccurs="0" />
<xs:element ref="shortcut" minOccurs="0" />
<xs:element ref="association" minOccurs="0" />
<xs:element ref="related-content" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="locale" type="xs:string" use="optional" />
<xs:attribute name="platform" type="xs:string" use="optional" />
<xs:attribute name="arch" type="xs:string" use="optional" />
<xs:attribute name="os" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="installer-desc">
<xs:complexType>
<xs:attribute name="main-class" type="xs:string" use="optional"
/>
</xs:complexType>
</xs:element>
<xs:element name="j2ee-application-client-permissions"
type="xs:string" />
<xs:element name="j2se">
<xs:complexType>
<xs:sequence>
<xs:element ref="resources" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="required" />
<xs:attribute name="href" type="xs:string" use="optional" />
<xs:attribute name="max-heap-size" type="xs:string"
use="optional" />
<xs:attribute name="java-vm-args" type="xs:string"
use="optional" />
<xs:attribute name="initial-heap-size" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="jar">
<xs:complexType>
<xs:attribute name="main" use="optional" default="false">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="download" use="optional" default="eager">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="eager" />
<xs:enumeration value="lazy" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="required" />
<xs:attribute name="part" type="xs:string" use="optional" />
<xs:attribute name="size" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="java">
<xs:complexType>
<xs:sequence>
<xs:element ref="resources" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="required" />
<xs:attribute name="href" type="xs:string" use="optional" />
<xs:attribute name="max-heap-size" type="xs:string"
use="optional" />
<xs:attribute name="java-vm-args" type="xs:string"
use="optional" />
<xs:attribute name="initial-heap-size" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="jnlp">
<xs:complexType>
<xs:sequence>
<xs:element ref="information" maxOccurs="unbounded" />
<xs:element ref="security" minOccurs="0" />
<xs:element ref="update" minOccurs="0" />
<xs:element ref="resources" minOccurs="0"
maxOccurs="unbounded" />
<xs:choice>
<xs:element ref="application-desc" />
<xs:element ref="applet-desc" />
<xs:element ref="component-desc" />
<xs:element ref="installer-desc" />
</xs:choice>
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="optional" />
<xs:attribute name="spec" type="xs:string" use="optional" />
<xs:attribute name="codebase" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="menu">
<xs:complexType>
<xs:attribute name="submenu" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="nativelib">
<xs:complexType>
<xs:attribute name="download" use="optional" default="eager">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="eager" />
<xs:enumeration value="lazy" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="href" type="xs:string" use="required" />
<xs:attribute name="part" type="xs:string" use="optional" />
<xs:attribute name="size" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="offline-allowed" type="xs:string" />
<xs:element name="package">
<xs:complexType>
<xs:attribute name="recursive" use="optional" default="false">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="part" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="param">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="property">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="related-content">
<xs:complexType>
<xs:sequence>
<xs:element ref="title" minOccurs="0" />
<xs:element ref="description" minOccurs="0" />
<xs:element ref="icon" minOccurs="0" />
</xs:sequence>
<xs:attribute name="href" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="resources">
<xs:complexType>
<xs:choice>
<xs:element ref="java" />
<xs:element ref="j2se" />
<xs:element ref="jar" />
<xs:element ref="nativelib" />
<xs:element ref="extension" />
<xs:element ref="property" />
<xs:element ref="package" />
</xs:choice>
<xs:attribute name="locale" type="xs:string" use="optional" />
<xs:attribute name="arch" type="xs:string" use="optional" />
<xs:attribute name="os" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="security">
<xs:complexType>
<xs:sequence>
<xs:element ref="all-permissions" minOccurs="0" />
<xs:element ref="j2ee-application-client-permissions"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="shortcut">
<xs:complexType>
<xs:sequence>
<xs:element ref="desktop" minOccurs="0" />
<xs:element ref="menu" minOccurs="0" />
</xs:sequence>
<xs:attribute name="online" use="optional" default="true">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="title">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="update">
<xs:complexType>
<xs:attribute name="check" use="optional" default="timeout">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="always" />
<xs:enumeration value="timeout" />
<xs:enumeration value="background" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="policy" use="optional" default="always">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="always" />
<xs:enumeration value="prompt-update" />
<xs:enumeration value="prompt-run" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="vendor">
<xs:complexType mixed="true" />
</xs:element>
</xs:schema>