<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
<!-- needed: add containerField, class attributes -->
<!-- Instruction steps 1 through 4 are listed in detail within the DOCTYPE declaration internal subset. -->
<!-- You must view full source of the DTD declarations (ProtoTagDtdDeclarationExamples.x3d.txt) to fully understand this file. -->
<!-- ********************************************************************* -->
<!-- ** Step 1: Copy the following DOCTYPE statement in your X3D scene. ** -->
<!-- ** Ensure you include the square backet [ on line 32! ** -->
<!-- ** Modify INCLUDE/IGNORE to match profiles of interest. ** -->
<!-- ********************************************************************* --> <X3D profile='Immersive'  version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.0.xsd ' >
<head>
<meta name='titlecontent=' ProtoTagDtdDeclarationExamples.x3d '/>
<meta name='createdcontent='17 April 2000'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name='creatorcontent='Don Brutzman'/>
<meta name='e-mailcontent='brutzman@nps.navy.mil'/>
<meta name='descriptioncontent=' Provides Prototype XML-tag-definition examples to demonstrate DTD modularization and extensibility in X3D scenes. Also see SpinGroupInternalSubsetDeclaration.x3d '/>
<meta name=' warning content=' You must view full source of the DTD declarations (ProtoTagDtdDeclarationExamples.x3d.txt) to fully understand validation techniques in this file. '/>
<meta name=' error content=' internal subset deficiency: nodeType attributes need to be converted to containerField attributes. '/>
<meta name='referencecontent=' ProtoTagDtdDeclarationExamples.x3d.txt '/>
<meta name='referencecontent=' SpinGroupInternalSubsetDeclaration.x3d.txt '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/development/ProtoTagDtdDeclarationExamples.x3d '/>
<meta name='generatorcontent=' X3D-Edit 3.1, https://www.web3d.org/x3d/content/README.X3D-Edit.html '/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: FS, InitialTransform

Index for ProtoDeclare definition: NewTransformExample
-->
<Scene>
<!-- ********************************************************************* -->
<!-- *** Step 5: Copy/edit ProtoDeclare, (optionally ProtoInstance) *** -->
<!-- *** and the tagset version for your nodes of interest. *** -->
<!-- *** When instantiating field Node/Nodes or field values, *** -->
<!-- *** use fieldValue tags to override the initial values. *** -->
<!-- *** The following example content instantiates prototype *** -->
<!-- *** NewTransformExample using tags and ProtoInstance. *** -->
<!-- ********************************************************************* -->
<!-- Declaring the NewTransformExample PROTO: -->
<ProtoDeclare name='NewTransformExample'>
<ProtoInterface>
<field name='translationtype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='rotationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='centertype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='scaletype='SFVec3fvalue='1 1 1accessType='inputOutput'/>
<field name='scaleOrientationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'/>
<field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'/>
<field name='childrentype='MFNodeaccessType='inputOutput'>
<WorldInfo info='"overridden at run time"'/>
</field>
</ProtoInterface>
<ProtoBody>
<!-- Transform is first node, which determines node type, and encloses children for instances. -->
<Transform DEF='InitialTransform'>
<IS>
<connect nodeField='translationprotoField='translation'/>
<connect nodeField='rotationprotoField='rotation'/>
<connect nodeField='centerprotoField='center'/>
<connect nodeField='scaleprotoField='scale'/>
<connect nodeField='scaleOrientationprotoField='scaleOrientation'/>
<connect nodeField='bboxCenterprotoField='bboxCenter'/>
<connect nodeField='bboxSizeprotoField='bboxSize'/>
<connect nodeField='childrenprotoField='children'/>
</IS>
</Transform>
</ProtoBody>
</ProtoDeclare>
<!-- Instantiating the NewTransformExample PROTO using a ProtoInstance tag: -->
<ProtoInstance name='NewTransformExample'>
<fieldValue name='translationvalue='0 1.5 0'/>
<fieldValue name='children'>
<Shape>
<Appearance>
<Material diffuseColor='0.1 0.8 0.8'/>
</Appearance>
<Text string='"ProtoTagDtdDeclaration Examples" "using a regular ProtoInstance"'>
<FontStyle DEF='FSjustify='"MIDDLE" "MIDDLE"size='0.7'/>
</Text>
</Shape>
</fieldValue>
</ProtoInstance>
<!-- Instantiating the NewTransformExample node using a customized tag: -->
<NewTransformExample center='0 0 0rotation='0 0 1 0scale='1 1 1scaleOrientation='0 0 1 0translation='0 -0.5 0'>
<fieldValue name='children'>
<Shape>
<Appearance>
<Material diffuseColor='0.1 0.8 0.2'/>
</Appearance>
<Text string='"plus header-declared XML tag from" "XML document subset declaration"'>
<FontStyle USE=' FS'/>
</Text>
</Shape>
</fieldValue>
</NewTransformExample>
<Transform translation='0 -2 0'>
<Anchor description='Click to view source (ProtoTagDtdDeclarationExamples.x3d.txt)parameter='"target=_blank"'
  url=' ProtoTagDtdDeclarationExamples.x3d.txt"https://www.web3d.org/x3d/content/examples/development/ProtoTagDtdDeclarationExamples.x3d.txt" ' >
<Shape>
<Appearance>
<Material diffuseColor='0.8 0.4 0.1'/>
</Appearance>
<Text string='"(click to see source)"'>
<FontStyle USE=' FS'/>
</Text>
</Shape>
</Anchor>
</Transform>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: FS, InitialTransform

Index for ProtoDeclare definition: NewTransformExample
-->

Event Graph ROUTE Table with 0 ROUTE total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.


ProtoInstance
NewTransformExample
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/development/ProtoTagDtdDeclarationExamplesIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/development/ProtoTagDtdDeclarationExamples.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
    <ProtoInstance name='ProtoName'> <field name='fieldName'/> </ProtoInstance> -->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->