<!--
#
# X3D Web3D Extensions Public DTD:
#
#	https://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPublic.dtd
#
#	this version:     3.1
#	current version:  3.3
#
#	created:          30 April 2005
#	revised:          31 October 2015
#
#	Maintainer:       Don Brutzman
#
# Purpose: support Web3D Consortium extensions to the X3D tagset.
# The primary Extensible 3D (X3D) Document Type Definition (DTD)
# is augmented by node definitions in x3d-3.0-Web3dExtensionsPublic.dtd
# and x3d-3.0-Web3dExtensionsPrivate.dtd
#
# X3D Specification DTDs:
#	https://www.web3d.org/specifications/x3d-3.0.dtd
#	https://www.web3d.org/specifications/x3d-3.0-InputOutputFields.dtd
#	https://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPublic.dtd
#	https://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPrivate.dtd
#
# Web3D extensions update URL:
#	https://www.web3d.org/x3d/content/x3d-3.0-Web3dExtensionsPublic.dtd
#
# changelog:
#	https://www.web3d.org/specifications/x3d-dtd-changelog.txt
#
-->

<!-- ================================================================= -->

<!ENTITY % LatticeXvlComponent	"INCLUDE">

<!--
		LatticeXVL 1.0 Document Type Definition (DTD)

Description:	Define the XVL tag and attribute profile for X3D.
  
		This X3D native node corresponds to a VRML ExternProto
		declaration.

 		Elements in this tagset are enabled by setting the 
		XvlProfile entity to "INCLUDE" at the top of an 
		X3D scene file, as shown in several examples such as
		examples/LatticeXvl/XvlShellAll.x3d.  This flag then 
		triggers inclusion of the XVL tags in the 
		x3d-3.0.dtd tagset. 

 Status:	Complete

 Authors:	Lattice Technology, Inc. proposed the Xvl extensions,
		Makito Seki produced XML encoding of XVL nodes for X3D
		with additional work by Marc Jablonski and Don Brutzman

 Reference:	LatticeXvl extension for X3D
 		https://www.web3d.org/x3d/content/examples/LatticeXvl/doc/proposal/LatticeProposal.html
 		http://www.Xvl3D.com

 Issues:	Mark Jablonski maintains the list.

 Created:	10 May 2001
-->

<![%LatticeXvlComponent;[

<!-- for future: G1T1 level -->

<!ENTITY % XvlG1T1ShellTypes "" >

<!-- Types of XVL Shells -->

<!ENTITY % XvlShell.shellTypes " %XvlG1T1ShellTypes; POLYGON_MESH | LATTICE_MESH " >


<!ELEMENT   XvlShell (IS?, (%MetadataNodes;)?, (
	( (%TextureCoordinateNodes;), ((%CoordinateNodes;) | %WildcardNodes;)  ) |
	( (%CoordinateNodes;), ((%TextureCoordinateNodes;) | %WildcardNodes;)? ) |
	( %WildcardNodes;, ((%TextureCoordinateNodes;) | (%CoordinateNodes;) | %WildcardNodes;)?) )?
)>
<!ATTLIST   XvlShell
	shellType          ( %XvlShell.shellTypes; )  #IMPLIED
	numberOfDivisions  	%SFInt32;	#IMPLIED
	vertexRound        	%MFFloat;	#IMPLIED
	edgeBeginCoordIndex	%MFInt32;	#IMPLIED
	edgeEndCoordIndex  	%MFInt32;	#IMPLIED
	edgeRound          	%MFFloat;	#IMPLIED
	edgeBeginVector    	%MFVec3f;	#IMPLIED
	edgeEndVector      	%MFVec3f;	#IMPLIED
	faceCoordIndex     	%MFInt32;	#IMPLIED
	faceTexCoordIndex  	%MFInt32;	#IMPLIED
	faceEmpty          	%MFBool; 	#IMPLIED
	faceHidden         	%MFBool; 	#IMPLIED
	containerField 		NMTOKEN "geometry"
	class    NMTOKENS     #IMPLIED
	DEF                	ID      	#IMPLIED
	USE                	IDREF   	#IMPLIED>

]]>

<!-- ================================================================= -->

