<!--
#
# X3D Web3D Extensions Public DTD:
#
#	https://www.web3d.org/specifications/x3d-4.1-Web3dExtensionsPublic.dtd
#
#	version:          4.1
#	created:          13 December 2025
#	revised:          see version control history
#
#	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-4.1-Web3dExtensionsPublic.dtd
# and x3d-4.1-Web3dExtensionsPrivate.dtd
#
# X3D Specification DTDs:
#	https://www.web3d.org/specifications/x3d-4.1.dtd
#	https://www.web3d.org/specifications/x3d-4.1-InputOutputFields.dtd
#	https://www.web3d.org/specifications/x3d-4.1-Web3dExtensionsPublic.dtd
#	https://www.web3d.org/specifications/x3d-4.1-Web3dExtensionsPrivate.dtd
#
# Web3D extensions update URL:
#	https://www.web3d.org/x3d/content/x3d-4.1-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-4.1.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
        id    NMTOKEN    #IMPLIED
	style %SFString; #IMPLIED
	DEF                	ID      	#IMPLIED
	USE                	IDREF   	#IMPLIED>

]]>

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

