X3D Model Documentation: TestSchematronDiagnostics.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2 
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
  3  <X3D profile='Core' version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'>
  4       <head>
  5            <component level='3'/>
  6            <component name='Geometry2D'/>
  7            <component level='3name='Geometry2D'/>
  8            <component level='3name='Geometry2D'/>
  9            <unit category='angleconversionFactor='-1name='nonPositiveConversionFactor'/>
 10            <unit category='angleconversionFactor='-1name='nonPositiveConversionFactor'/>
 11            <meta name='titlecontent='TestSchematronDiagnostics.x3d'/>
 12            <meta name='descriptioncontent='Test Schematron diagnostics capabilities for detecting various content errors and style warnings.'/>
 13            <meta name='descriptioncontent='Second meta tag to test warning that two description meta tags are present.'/>
 14            <meta name='creatorcontent='Don Brutzman'/>
 15            <meta name='createdcontent='19 October 2008'/>
 16            <meta name='modifiedcontent='25 October 2020'/>
 17            <meta name=' warning content=' The regex is not finding IllegalMinusSignsTest. '/>
 18            <meta name=' error content=' Test scene with many errors, primarily intended to exercise most of the rules in the X3D Schematron diagnostic set. '/>
 19            <meta name=' warning content=' Test scene with many warnings embedded in comments. '/>
 20            <meta name='hintcontent='Test scene with many hints embedded in comments.'/>
 21            <meta name='infocontent='Perhaps the most erroneous X3D scene in the world!'/>
 22            <meta name='infocontent='Perhaps the most erroneous X3D scene in the world!'/>
 23            <meta name='referencecontent='https://www.web3d.org/x3d/tools/schematron/X3dSchematronValidityChecks.sch'/>
 24            <meta name='referencecontent='https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html'/>
 25            <meta name='referencecontent='https://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance'/>
 26            <meta name='identifiercontent='https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.x3d'/>
 27            <meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
 28            <meta name='licensecontent='../license.html'/>
 29       </head>
<!--

Visualization reports for HAnimHumanoid models: JimDandy HAnimHumanoid Report, JimDandy HAnimHumanoid Report
<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: "QuotedDEF", AnchorBookmark, AppearanceWithProtoInstanceChild, BackgroundColorProblems, BackgroundWithParentLOD, BadBoundingBoxValues, BadChild, BadContainerField, BadNameBadFieldValueNameMissingInitialization, BothUrlAndCDATA, CADFaceMultipleShapeChildren, CADFaceOneShapeChild, CaseSensitive, CharacterBeforeQuotes, ChildrenCorrectContainerField, ChildrenIncorrectContainerField, Clock, ColorInterpolatorColorProblems, containerFieldNot_shape, ContainsISchildButNoParentProtoDeclare, CountTests, DEF, DEF_USEinsideProtoDeclareScope, DEFAppendedSpace, DefaultImageData, DEFcontainsUSEcopyOfSelf, DEFdescriptionMatch, DEFEmbedded Space, DEFoutsideProtoDeclareScope, DEFPrependedSpace, DeprecatedNodeUnquotedGeoSystem, DirectionalLightColorProblems, DistanceMismatchIllegalFieldOfView, DoubleDeclaration2, DoubleDEF, DoubleDEF, DuplicatedCoordinatePointArray, DuplicatedDeclaration, DuplicateImageData, duplicateName1, duplicateName2, ElevationGridBadDimensions, ElevationGridInsufficientHeights, ElevationGridTooManyHeights, Embedded Blanks DEF, EmbeddedQuoteMarksOK, EmptyColor, EmptyCoordinate, EmptyGroup, EmptyGroupContainsComment, EmptyGroupInsideSwitch, EmptyNormal, EmptyShapeWithCommentSilencesWarning, EmptySwitchContainsROUTE, EmptyTextureCoordinate, EscapedQuoteMarkWarning, ExtrusionCrossSectionMiscountSpineMismatchCrossSectionMiscount, familyValuesMissingIntermediateQuotes, FirstTitle, FogColorProblems, FogWithParentLOD, FontStyleFieldsContainIllegalQuotes, GeometryNodeCollisionParentNeedsParentShapeWithProxyContainerField, GeometryNodeNeedsShapeParent, hanim_HumanoidRoot, hanim_Top_view, hanim_Top_viewpoint, HAnimCoordinateCorrectContainerField, HAnimCoordinateDoubleCorrectContainerField, HAnimCoordinateDoubleIncorrectContainerField, HAnimCoordinateIncorrectContainerField, HAnimNormalIncorrectContainerField, HasCDATAwithoutEcmascriptHeader, HasLegalCDATA, HasUrlNoCDATA, HelloWorld, HumanoidCannotContainChildrenNodes, IfsEmptyChildren, IfsSingletonChildren, IllegalBackgroundChild, IllegalChild, IllegalChildForLoadSensor, IllegalChildrenContainerFields, IllegalColorValuesMaterial, IllegalCombinationDEFUSE, IllegalDecimalPointsTest, IllegalFields, IllegalGeometryProxyNode, IllegalHAnimDisplacerInHAnimSiteNode, IllegalImageData, IllegalInfoQuotes, IllegalMetadataContainerField, IllegalMinusSignsTest, IllegalNameIllegalParent, IllegalParent1, IllegalParent2, IllegalParent3, IllegalParentChild-DEF-USE, IllegalPlaneEquationValues, IllegalTextureBackgroundChild, IllegalTextureBackgroundChildContainerField, IllegalValuesColor, IllegalValuesColorRGBA, IllegalViewpointGroupChild, ImageDataTest, ImproperCapitalizationOfNodeName, improperDEF, ImproperDEFname, IncorrectChildNodes, incorrectlyNestedHumanoidMissingNameAttribute, InterpolatorWithSingleKey, ISconnectDescription, JointInterpolator, JointNameSegmentNameHierarchyTest, LegalChild, LegalChild1, LegalChild2, LegalChild3, LegalGeoSystem, MismatchedJointCenter_l_knee, MismatchedJointCenter_r_knee, MismatchedKeyArrays, MismatchedKeyArraysSFVec3f, MissingComponentH-AnimLevel1, MissingIndex, MissingNameAttributeCheckContainerField, MissingParentShape, NavigationInfoWithParentLOD, NavigationInfoWithTypeALL, NeedQuoteMarks, negativeCenterHeight, negativeTranslationHeight, NoBackgroundChildrenAllowed, NoChildAppearance, NoChildGeometry, noChildNodeforUSE, NoChildren, NoChildrenNoUrl, NodeFollowsRoute1, NodeFollowsRoute2, NodeUrlVRML.wrl.PrecedingX3D.x3d, NoImageData, NoLocalFogV3.0, NoMaterialNoTexture, NoOutputROUTE, NoParentSoundNode, NormalPath, NoROUTE, NoROUTEs, NoROUTEsNoKeyValueArray, NoSpacesInDescription, NoTextureChildren, notUniqueName1, notUniqueName2, NoUrlIllegalChild, NoUrlNoCDATA, OI, OKviewpoint, OnlyFieldDeclarationsAllowedInProtoInterface, PeerBillboard, PeerCylinderSensor, PeerTouchSensor, PointLightColorProblems, PrototypeRootNode, RecursiveInlineInvocation, ReusableAudioClip, rootNodeContainerFieldIsCorrect, RouteButNoFields, SecondTitle, separateBackColorWrong, SingleColor, SingleCoordinate, SingleNormal, SingleProtoInstanceChild, SingleTextureCoordinate, SoundDefaults, SoundMaxLessThanDefaultMin, SoundMaxNegative, SoundMinGreaterThanDefaultMax, SoundMinGreaterThanMax, SoundMinNegative, SpotLightColorProblems, StaticGroupChildTests, StaticGroupDescendantsCannotConsumeEvents, StaticGroupDescendantsCannotProduceEvents, textureContainerField, TextureCoordinateGeneratorIllegalMode, TextureCoordinateGeneratorIllegalParameterCount, TextureTransformWithNoSiblingTextureNode, ThreeUnescapedQuoteMarksMissingSpaceEndsApostrophe, UnquotedTypeAndTransitionTypeErrors, UrlDotWrlPrecedesDotX3d, USEandDEFtogether, USEmismatchDEFnodeType, USEoutsideProtoDeclareScope, USEprecedesDEF, USEwithChildElement, ViewHumanoidMissingCenterOfRotation, ViewpointWithParentLOD, watchListContainerField, ZeroMagnitudeRotationAxes

Index for Viewpoint nodes: DEFdescriptionMatch, hanim_Top_viewpoint, ISconnectDescription, OKviewpoint, ViewHumanoidMissingCenterOfRotation, ViewpointWithParentLOD

Index for ExternProtoDeclare definitions: DoubleDeclarationUrlMissingPoundProtoName, DoubleDeclarationUrlMissingPoundProtoName, DoubleMixedDeclaration, ExternProtoDeclareAfterInstance, ExternProtoDeclareBeforeInstance, ExternProtoDeclareUrlVRML.wrl.MissingX3D.x3d, ExternProtoDeclareUrlVRML.wrl.PrecedingX3D.x3d, X3D

Index for ProtoDeclare definitions: DoubleMixedDeclaration, DoubleProtoDeclaration, DoubleProtoDeclaration, EmptyProtoInterfaceEmptyProtoBody, IllegalProtoInterface, MissingProtoBody, ProtoDeclareAfterInstance, ProtoDeclareBeforeInstance, ReferenceTest, X3D
-->
 30       <Scene USE='improperUSE'>
 31            <!-- - illegal comment starts with extra hyphen - character -->
 32            <!-- - illegal comment has intermediate paired-hyphen - - characters -->
 33 
          <!-- TouchSensor IllegalCombinationDEFUSE is a DEF node that has 1 USE node: USE_1 -->
          <TouchSensor USE='IllegalCombinationDEFUSE'/>
 34            <CylinderSensor DEF='DoubleDEFenabled='false'/>
 35            <TimeSensor DEF='DoubleDEF'/>
 36            <WorldInfo DEF='FirstTitletitle='title #1'/>
 37            <WorldInfo DEF='SecondTitletitle='title #2'/>
 38            <WorldInfo DEF='DEFPrependedSpace'/>
 39            <WorldInfo DEF='DEFEmbedded Space'/>
 40            <WorldInfo DEF='DEFAppendedSpace'/>
 41            <WorldInfo DEF='IllegalInfoQuotesinfo='"WorldInfo info strings need to be quoted"'/>
 42            <WorldInfo DEF='IllegalChild'>
 43                 <WorldInfo/>
 44            </WorldInfo>
 45            <WorldInfo DEF='LegalChild'>
 46                 <MetadataString/>
 47            </WorldInfo>
 48            <Anchor DEF='NoChildrenNoUrl'/>
 49            <Anchor DEF='AnchorBookmarkparameter='"target=unquoted"'   url=' "#missingBookmark" '>
 50                 <Group/>
 51            </Anchor>
 52            <Inline DEF='HelloWorld'   url=' "../HelloWorld.x3d" "https://www.web3d.org/x3d/content/examples/Basic/HelloWorld.x3d" "../HelloWorld.wrl"'/>
 53            <Inline DEF='UrlDotWrlPrecedesDotX3d'   url=' "test.wrl" "test.x3d" "adjacentquote" "marks" '/>
 54            <Inline DEF='NoUrlIllegalChild'>
 55                 <WorldInfo/>
 56            </Inline>
 57            <Inline DEF='NodeUrlVRML.wrl.PrecedingX3D.x3d'   url=' "HelloWorld.wrl" "HelloWorld.x3d"'/>
 58            <ExternProtoDeclare name='ExternProtoDeclareUrlVRML.wrl.PrecedingX3D.x3d'   url=' "HelloWorld.wrl" "HelloWorld.x3d"'/>
 59            <ExternProtoDeclare name='ExternProtoDeclareUrlVRML.wrl.MissingX3D.x3d'   url=' "HelloWorld.x3d" "https://www.web3d.org/x3d/content/examples/Basic/development/HelloWorld.x3d" "HelloWorld.wrl" "https://www.web3d.org/x3d/content/examples/Basic/development/HelloWorld.wrl" '/>
 60 
          <!-- Shape NoChildAppearance is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
          <Shape DEF='NoChildAppearance'>
 61                 <Box/>
 62            </Shape>
 63            <Shape DEF='NoChildGeometry'>
 64 
               <!-- Appearance NoMaterialNoTexture is a DEF node that has 8 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5, USE_6, USE_7, USE_8 -->
               <Appearance DEF='NoMaterialNoTexture'/>
 65            </Shape>
 66            <!-- test no other fields if USE present -->
 67            <Shape USE='NoChildAppearance'/>
 68            <Shape USE='NoChildAppearance'/>
 69            <Shape USE='NoChildAppearance'/>
 70 
          <!-- Shape USEwithChildElement is a DEF node that has 1 USE node: USE_1 -->
          <Shape DEF='USEwithChildElement'>
 71                 <Box/>
 72                 <Appearance DEF='AppearanceWithProtoInstanceChild'>
 73                      <ProtoInstance name='NodeSubstituteNoDeclaration'/>
 74                 </Appearance>
 75            </Shape>
 76            <Appearance DEF='MissingParentShape'/>
 77            <Shape USE='USEwithChildElement'>
 78                 <Appearance USE='NoMaterialNoTexture'/>
 79            </Shape>
 80            <Shape DEF='SingleProtoInstanceChild'>
 81                 <ProtoInstance name='NodeSubstituteNoDeclaration'/>
 82            </Shape>
 83            <!-- no DEF name -->
 84            <TimeSensor DEF='NoOutputROUTE'/>
 85            <TimeSensor DEF='ClockcycleInterval='100loop='true'/>
 86            <ColorInterpolator/>
 87            <ColorInterpolator DEF='InterpolatorWithSingleKeykey='0'/>
 88            <ColorInterpolator DEF='ColorInterpolatorColorProblemskey='0keyValue='-1 1.2 0.3 0.4'/>
 89            <!-- no DEF name -->
 90            <PositionInterpolator DEF='NoROUTEsNoKeyValueArraykey='0 0'/>
 91 
          <!-- ROUTE information for MismatchedKeyArrays node:  [self-route from value_changed to set_fraction ] -->
          <ScalarInterpolator DEF='MismatchedKeyArrayskey='0keyValue='0 0'/>
 92 
          <!-- ROUTE information for MismatchedKeyArraysSFVec3f node:  [self-route from value_changed to set_fraction ] -->
          <NormalInterpolator DEF='MismatchedKeyArraysSFVec3fkey='0 1keyValue='0 0 0 1 1'/>
 93            <!-- bogus ROUTEs to allow trapping deeper error -->
 94            < ROUTE  fromNode='MismatchedKeyArrays' fromField='value_changed' toNode='MismatchedKeyArrays' toField='set_fraction'/>
 95            < ROUTE  fromNode='MismatchedKeyArraysSFVec3f' fromField='value_changed' toNode='MismatchedKeyArraysSFVec3f' toField='set_fraction'/>
 96            <BooleanSequencer/>
 97            <BooleanSequencer DEF='NoROUTEskey='0 0.5 1keyValue='true false true'/>
 98            <IntegerTrigger/>
 99            <IntegerTrigger DEF='NoROUTE'/>
100            <OrientationInterpolator DEF='OI'/>
101            <LoadSensor DEF='ChildrenIncorrectContainerField'>
102                 <ImageTexture DEF='textureContainerField'   url=' "http:/bogus" "https://www.web3d.org/x3d/content/examples/Basic/development/http:/bogus" '/>
103            </LoadSensor>
104            <LoadSensor DEF='ChildrenCorrectContainerField'>
105                 <ImageTexture DEF='watchListContainerFieldcontainerField='watchList'/>
106            </LoadSensor>
107            <LoadSensor DEF='IncorrectChildNodes'>
108                 <Group containerField='watchList'/>
109                 <Anchor DEF='IllegalChildForLoadSensor'/>
110            </LoadSensor>
111            <Script DEF='HasLegalCDATA'>
112                 <field name='duplicatedFieldNametype='SFBoolaccessType='inputOnly'/>
113                 <field name='duplicatedFieldNametype='SFBoolaccessType='inputOnly'/>
  <![CDATA[
      
ecmascript:
function initialize()
{
   // initialize() method silences ROUTE check
}

    
]]>
115            </Script>
116            <Script DEF='HasCDATAwithoutEcmascriptHeader'>
117                 <field name='noAccessTypetype='SFBool'/>
118                 <field name='noTypeaccessType='inputOnly'/>
119                 <field type='noNameaccessType='inputOnly'/>
120                 <field name='neverSettype='SFBoolaccessType='outputOnly'/>
  <![CDATA[
      
ecmascript:
      
// empty Script body

    

    
]]>
122            </Script>
123            <Script DEF='HasUrlNoCDATA'   url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" '>
124            </Script>
124            <Script DEF='NoUrlNoCDATA'>
125            </Script>
125            <Script DEF='BothUrlAndCDATA'   url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" '>
126                 <field name='inputFunctionDefinedTwicetype='SFBoolaccessType='inputOnly'/>
127                 <field name='noInputFunctionAllowedtype='SFBoolaccessType='outputOnly'/>
  <![CDATA[
      
ecmascript:

function set_noInputFunctionAllowed (newValue)
{
    // cannot have input function for output field
}
function set_inputFunctionDefinedTwice (newValue)
{
    // only one definition allowed; this is #1
}
function set_inputFunctionDefinedTwice (newValue)
{
    // only one definition allowed; this is #2
}

    
]]>
129            </Script>
130            <Script DEF='RouteButNoFields'   url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" '>
131            </Script>
131            < ROUTE  fromNode='NoFields' fromField='blah' toNode='NoFields' toField='blah'/>
132            <ProtoInstance name='NoDeclaration'/>
133            <ProtoDeclare name='MissingProtoBody'/>
134 
          <!-- WorldInfo DEFoutsideProtoDeclareScope is a DEF node that has 1 USE node: USE_1 -->
          <WorldInfo DEF='DEFoutsideProtoDeclareScope'/>
135            <ProtoDeclare name='DoubleMixedDeclarationDEF='DuplicatedDeclaration'>
136                 <ProtoBody>
137                      <Group/>
138                      <Viewpoint DEF='ISconnectDescription'>
139                           <IS>
140                                <connect nodeField='descriptionprotoField='description'/>
141                           </IS>
142                      </Viewpoint>
143                      <!-- TODO not yet working... -->
144                      <WorldInfo USE='DEFoutsideProtoDeclareScope'/>
145 
                    <!-- WorldInfo USEoutsideProtoDeclareScope is a DEF node that has 1 USE node: USE_1 -->
                    <WorldInfo DEF='USEoutsideProtoDeclareScope'/>
146 
                    <!-- WorldInfo DEF_USEinsideProtoDeclareScope is a DEF node that has 1 USE node: USE_1 -->
                    <WorldInfo DEF='DEF_USEinsideProtoDeclareScope'/>
147                      <WorldInfo USE='DEF_USEinsideProtoDeclareScope'/>
148                 </ProtoBody>
149            </ProtoDeclare>
150            <WorldInfo USE='USEoutsideProtoDeclareScope'/>
151            <ExternProtoDeclare name='DoubleMixedDeclaration'   url=' http://bogus#DifferentRemotePrototypeName '/>
152            <ProtoInstance name='DoubleMixedDeclarationDEF='DoubleDeclaration2'>
153                 <fieldValue name='duplicatedFieldValueNamevalue='blah'/>
154                 <fieldValue name='duplicatedFieldValueName'/>
155                 <fieldValue value='noName'/>
156            </ProtoInstance>
157            <ProtoDeclare name='DoubleProtoDeclaration'   url=' "http:/bogus" "https://www.web3d.org/x3d/content/examples/Basic/development/http:/bogus" '/>
158            <ProtoDeclare name='DoubleProtoDeclaration'   url=' http:///bogus '/>
159            <ExternProtoDeclare name='DoubleDeclarationUrlMissingPoundProtoName'   url=' http:///bogus '/>
160            <ExternProtoDeclare name='DoubleDeclarationUrlMissingPoundProtoName'   url=' "http:/bogus" "https://www.web3d.org/x3d/content/examples/Basic/development/http:/bogus" '/>
161            <ProtoDeclare name='EmptyProtoInterfaceEmptyProtoBody'>
162                 <ProtoInterface/>
163                 <ProtoBody/>
164            </ProtoDeclare>
165            <ProtoDeclare name='IllegalProtoInterface'>
166                 <ProtoInterface>
167                      <Group DEF='OnlyFieldDeclarationsAllowedInProtoInterface'/>
168                 </ProtoInterface>
169                 <ProtoBody>
170                      <Group/>
171                 </ProtoBody>
172            </ProtoDeclare>
173            <ExternProtoDeclare name='ExternProtoDeclareBeforeInstance'   url=' "httpsMissing" "https://www.web3d.org/x3d/content/examples/Basic/development/httpsMissing" '/>
174            <ProtoInstance name='ExternProtoDeclareBeforeInstance'/>
175            <ProtoInstance name='ExternProtoDeclareAfterInstance'/>
176            <ExternProtoDeclare name='ExternProtoDeclareAfterInstance'   url=' "httpMissing" "https://www.web3d.org/x3d/content/examples/Basic/development/httpMissing" '/>
177            <ProtoDeclare name='ProtoDeclareBeforeInstance'>
178                 <ProtoBody>
179                      <Group/>
180                 </ProtoBody>
181            </ProtoDeclare>
182            <ProtoInstance name='ProtoDeclareBeforeInstance'/>
183            <ProtoInstance name='ProtoDeclareAfterInstance'/>
184            <ProtoDeclare name='ProtoDeclareAfterInstance'>
185                 <ProtoBody>
186                      <Group>
187                           <IS>
188                                <connect nodeField='danglingConnectNodeFieldprotoField='danglingConnectProtoField'/>
189                           </IS>
190                      </Group>
191                 </ProtoBody>
192            </ProtoDeclare>
193            <Group DEF='ContainsISchildButNoParentProtoDeclare'>
194                 <IS>
195                      <connect nodeField='isolatedConnectNodeFieldprotoField='isolatedConnectProtoField'/>
196                 </IS>
197            </Group>
198            <!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField" protoField="isolatedConnectProtoField"/> -->
199            <Shape DEF='BadBoundingBoxValuesbboxCenter='1a 2b 3cbboxSize='-1 -2 -3'>
200                 <Extrusion DEF='ExtrusionCrossSectionMiscountSpineMismatchCrossSectionMiscountcrossSection='1 2 3orientation='0 0 1 0 0 0 1 0 0 0 1 0scale='1 1 1 1 1 1 1 1 1 1 1 1spine='0 0 0 0 2 0'/>
201                 <!-- check for reserved word in DEF -->
202                 <Appearance DEF='DEF'>
203                      <TwoSidedMaterial DEF='separateBackColorWrongbackShininess='0.123'/>
204                 </Appearance>
205            </Shape>
206            < ROUTE  fromNode='blah' fromField='set_blah' toNode='bleah' toField='bleah_changed'/>
207            <Viewpoint DEF='OKviewpointdescription='this viewpoint is OK'/>
208            <Viewpoint DEF='DEFdescriptionMatchdescription='DEFdescriptionMatch'/>
209            <OrthoViewpoint DEF='NoSpacesInDescriptiondescription='NeedToPutSpacesInDescription'/>
210            <GeoViewpoint DEF='IllegalFieldsnavType='"OTHER"containerField='children'/>
211            <GeoMetadata DEF='BadChildcontainerField='children'>
212                 <GeoViewpoint DEF='BadContainerFieldcontainerField='children'/>
213            </GeoMetadata>
214            <!-- check for reserved word in name definitions -->
215            <ProtoDeclare name='X3D'>
216                 <ProtoBody>
217                      <Group DEF='PrototypeRootNode'/>
218                 </ProtoBody>
219            </ProtoDeclare>
220            <ExternProtoDeclare name='X3D'>
221                 <field name='X3Dtype='SFBoolaccessType='inputOnly'/>
222            </ExternProtoDeclare>
223            <ProtoInstance name='X3DDEF='BadNameBadFieldValueNameMissingInitialization'>
224                 <fieldValue name='X3D'/>
225            </ProtoInstance>
226            <ProtoInstance name='X3D'>
227                 <fieldValue name='X3Dvalue='doubleInitialization'>
228                      <Shape/>
229                 </fieldValue>
230            </ProtoInstance>
231            <LOD>
232                 <Background DEF='BackgroundWithParentLOD'/>
233                 <Fog DEF='FogWithParentLOD'/>
234                 <NavigationInfo DEF='NavigationInfoWithParentLOD'/>
235                 <Viewpoint DEF='ViewpointWithParentLOD'/>
236            </LOD>
237            <ViewpointGroup DEF='IllegalViewpointGroupChild'>
238                 <Transform/>
239            </ViewpointGroup>
240            <Shape>
241                 <Box/>
242                 <Appearance>
243                      <PixelTexture DEF='NoImageData'/>
244                 </Appearance>
245            </Shape>
246            <Shape>
247                 <Box/>
248                 <Appearance>
249                      <PixelTexture DEF='IllegalImageDataimage='1 a b c d'/>
250                 </Appearance>
251            </Shape>
252            <Shape>
253                 <Box/>
254                 <Appearance>
255                      <PixelTexture DEF='DefaultImageData'/>
256                 </Appearance>
257            </Shape>
258            <Shape>
259                 <Box/>
260                 <Appearance>
261                      <PixelTexture DEF='DuplicateImageData'/>
262                 </Appearance>
263            </Shape>
264            <Shape>
265                 <Box/>
266                 <Appearance>
267                      <PixelTexture DEF='ImageDataTestimage='1 1 1 0xAA'/>
268                 </Appearance>
269            </Shape>
270 
          <!-- WorldInfo USEandDEFtogether is a DEF node that has 1 USE node: USE_1 -->
          <WorldInfo USE='USEandDEFtogether'/>
271            <WorldInfo USE='USEprecedesDEF'/>
272 
          <!-- WorldInfo USEprecedesDEF is a DEF node that has 1 USE node: USE_1 -->
          <WorldInfo DEF='USEprecedesDEF'/>
273            <WorldInfo USE='noDEFforUSE'/>
274 
          <!-- WorldInfo noChildNodeforUSE is a DEF node that has 1 USE node: USE_1 -->
          <WorldInfo DEF='noChildNodeforUSE'/>
275            <WorldInfo USE='noChildNodeforUSE'>
276                 <MetadataSet>
277                      <MetadataString name='someStringArrayvalue='"unquoted string values"'/>
278                 </MetadataSet>
279            </WorldInfo>
280 
          <!-- Group DEFcontainsUSEcopyOfSelf is a DEF node that has 1 USE node: USE_1 -->
          <Group DEF='DEFcontainsUSEcopyOfSelf'>
281                 <Group USE='DEFcontainsUSEcopyOfSelf'/>
282            </Group>
283 
          <!-- WorldInfo USEmismatchDEFnodeType is a DEF node that has 1 USE node: USE_1 -->
          <WorldInfo DEF='USEmismatchDEFnodeType'/>
284            <Group USE='USEmismatchDEFnodeType'/>
285            <LocalFog DEF='NoLocalFogV3.0'/>
286            <PointLight/>
287            <Shape>
288                 <IndexedFaceSet DEF='CountTestscreaseAngle='-1.234coordIndex='0 1 2 -1'>
289                      <Coordinate point='0 0 0 0 1 0 1 0 0 5'/>
290                      <Color DEF='IllegalValuesColorcolor='-1 2 3'/>
291                      <ColorRGBA DEF='IllegalValuesColorRGBAcolor='-1 1.2 0.3 0.4'/>
292                      <TextureCoordinate/>
293                      <TextureCoordinateGenerator/>
294                 </IndexedFaceSet>
295                 <Appearance USE='NoMaterialNoTexture'/>
296            </Shape>
297            <Shape>
298                 <Text DEF='CharacterBeforeQuotesstring='x " "'>
299                      <FontStyle family='"unquotedFontFamilyName"justify='"unquotedIllegalJustification"'/>
300                 </Text>
301                 <Appearance USE='NoMaterialNoTexture'/>
302            </Shape>
303            <Shape>
304                 <Text DEF='ThreeUnescapedQuoteMarksMissingSpaceEndsApostrophestring='"" x" ''>
305                      <FontStyle DEF='familyValuesMissingIntermediateQuotesfamily='"SANS SERIF"justify='"BEGIN" "BEGIN"'/>
306                 </Text>
307                 <Appearance USE='NoMaterialNoTexture'/>
308            </Shape>
309            <Shape>
310                 <Text DEF='EscapedQuoteMarkWarningstring='"here is a single escaped \" quote mark character"'>
311                      <FontStyle justify='"IllegalValue"'/>
312                 </Text>
313                 <Appearance USE='NoMaterialNoTexture'/>
314            </Shape>
315            <Shape>
316                 <Text DEF='NeedQuoteMarksstring='"quote marks are required for single string"'>
317                      <FontStyle/>
318                 </Text>
319                 <Appearance USE='NoMaterialNoTexture'/>
320            </Shape>
321            <Shape>
322                 <Text DEF='EmbeddedQuoteMarksOKstring='"plain text with \"quote marks\" embedded"'>
323                      <FontStyle DEF='FontStyleFieldsContainIllegalQuoteslanguage='"noquo"style='"PLAIN"'/>
324                 </Text>
325                 <Appearance USE='NoMaterialNoTexture'/>
326            </Shape>
327            <Shape>
328                 <IndexedQuadSet DEF='MissingIndexccw='truecolorPerVertex='truenormalPerVertex='truesolid='true'>
329                      <Coordinate DEF='DuplicatedCoordinatePointArraypoint='0 0 0 0 1 0 1 0 0 5'/>
330                 </IndexedQuadSet>
331                 <Appearance USE='NoMaterialNoTexture'/>
332            </Shape>
333            <NormalInterpolator DEF='NormalPathkey='0 0.5 1keyValue='0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 5'/>
334            <GeoLocation DEF='LegalGeoSystemgeoCoords='36.607 -121.885 0.0containerField='children'/>
335            <ProtoDeclare name='ReferenceTest'>
336                 <ProtoInterface>
337                      <field name='defaultTesttype='SInt32value='78accessType='initializeOnly'/>
338                      <field name='incorrectInitializationSFColorRGBAtype='SFColorRGBAvalue='1 1 1accessType='initializeOnly'/>
339                 </ProtoInterface>
340                 <ProtoBody>
341                      <Script   url=' "http:///bogus" '>
342                           <field name='missingInitializationValue1type='SFBoolaccessType='initializeOnly'/>
343                           <field name='missingInitializationValue2type='SFInt32accessType='initializeOnly'/>
344                           <field name='incorrectInitializationSFVec3ftype='SFVec3fvalue='0.0accessType='initializeOnly'/>
345                           <field name='incorrectInitializationMFColortype='MFColorvalue='1 2 3 4 5 6 7accessType='initializeOnly'/>
346                           <field name='missingInitializationValueHasIStype='SFBoolvalue='trueaccessType='initializeOnly'/>
347                           <fieldValue name='shouldBeField'/>
348                           <IS>
349                                <connect nodeField='missingInitializationValue2protoField='defaultTest'/>
350                                <connect nodeField='missingInitializationValueHasISprotoField='test'/>
351                           </IS>
352                      </Script>
353                      <!-- Subsequent nodes do not render, but still must be a valid X3D subgraph -->
354                 </ProtoBody>
355            </ProtoDeclare>
356            <ProtoInstance name='ReferenceTest'>
357                 <fieldValue name='defaultTestvalue='78'/>
358                 <fieldValue name='incorrectInitializationSFColorRGBAvalue='1 1 1 1 1'/>
359                 <field name='shouldBeFieldValue'/>
360            </ProtoInstance>
361            <Transform DEF='ZeroMagnitudeRotationAxesscaleOrientation='0 0 0 0'/>
362            <Box DEF='GeometryNodeNeedsShapeParent'/>
363            <Collision DEF='IllegalGeometryProxyNode'>
364                 <Box DEF='GeometryNodeCollisionParentNeedsParentShapeWithProxyContainerFieldcontainerField='proxy'/>
365            </Collision>
366            <NavigationInfo DEF='UnquotedTypeAndTransitionTypeErrorstransitionType='"ALTERNATE"type='OTHER'/>
367            <NavigationInfo DEF='NavigationInfoWithTypeALLtype='"ALL"'/>
368 
          <!-- Group IllegalParentChild-DEF-USE is a DEF node that has 1 USE node: USE_1 -->
          <Group DEF='IllegalParentChild-DEF-USE'>
369                 <Group USE='IllegalParentChild-DEF-USE'/>
370            </Group>
371            <CADLayer name='contains whitespace and incorrect boolean valuevisible='true false wrong'/>
372            <Shape>
373                 <ImageTexture DEF='IllegalParent1'/>
374                 <MovieTexture DEF='IllegalParent2'/>
375                 <PixelTexture DEF='IllegalParent3'/>
376            </Shape>
377            <Shape>
378 
               <!-- TextureTransform TextureTransformWithNoSiblingTextureNode is a DEF node that has 1 USE node: USE_1 -->
               <TextureTransform DEF='TextureTransformWithNoSiblingTextureNode'/>
379            </Shape>
380            <Shape>
381                 <Appearance>
382                      <TextureTransform USE='TextureTransformWithNoSiblingTextureNode'/>
383                      <TextureCoordinateGenerator DEF='TextureCoordinateGeneratorIllegalModemode='Bogus'/>
384                      <TextureCoordinateGenerator DEF='TextureCoordinateGeneratorIllegalParameterCountmode='NOISEparameter='1 2 3 4'/>
385                 </Appearance>
386            </Shape>
387            <Shape>
388                 <Appearance>
389                      <MultiTexture DEF='NoTextureChildrenfunction='"BogusFunction1Value" "BogusFunction2Value" "mode='"BogusMode1Value" BogusMode2Value"source='"BogusSourceValue"'/>
390                 </Appearance>
391            </Shape>
392            <Background DEF='NoBackgroundChildrenAllowed'>
393                 <ImageTexture DEF='IllegalBackgroundChild'/>
394            </Background>
395            <TextureBackground>
396                 <ImageTexture DEF='LegalChild1'/>
397                 <MovieTexture DEF='LegalChild2'/>
398                 <PixelTexture DEF='LegalChild3'/>
399                 <Group DEF='IllegalTextureBackgroundChild'/>
400                 <ImageTexture DEF='IllegalTextureBackgroundChildContainerFieldcontainerField='frontUrl'/>
401            </TextureBackground>
402            <Group DEF='Embedded Blanks DEF'/>
403            <Group USE='Embedded Blanks USE'/>
404            <Group DEF='"QuotedDEF"'/>
405            <Group USE='"QuotedUSE"'/>
406            <MetadataSet>
407                 <MetadataBoolean/>
408                 <MetadataFloat containerField='value'/>
409                 <MetadataDouble containerField='illegalName'/>
410            </MetadataSet>
411            <MetadataString DEF='IllegalMetadataContainerFieldcontainerField='value'/>
412            <ScalarInterpolator DEF='IllegalDecimalPointsTestkey='0.00.5 1.0keyValue='1 2 3'/>
413            <ScalarInterpolator DEF='IllegalMinusSignsTestkey='0.0 0.5 1.0keyValue='-1-2 3'/>
414            <!-- test of NeedsChildNode -->
415            <Group DEF='EmptyGroup'/>
416            <Switch whichChoice='-1'>
417                 <!-- test of NeedsChildNode -->
418                 <Group DEF='EmptyGroupInsideSwitch'/>
419            </Switch>
420            <Group DEF='EmptyGroupContainsComment'>
421                 <!-- test of NeedsChildNode -->
422            </Group>
423            <Switch DEF='EmptySwitchContainsROUTEwhichChoice='-1'>
424                 <!-- test of NeedsChildNode -->
425                 < ROUTE  fromNode='NoFields' fromField='blah' toNode='NoFields' toField='blah'/>
426            </Switch>
427            <CADLayer visible='false'>
428                 <CADAssembly>
429                      <CADPart>
430                           <CADFace DEF='CADFaceOneShapeChild'>
431                                <Transform containerField='shape'>
432                                     <Shape/>
433                                </Transform>
434                           </CADFace>
435                           <CADFace DEF='CADFaceMultipleShapeChildren'>
436                                <Transform DEF='containerFieldNot_shape'>
437                                     <Shape/>
438                                     <Shape/>
439                                </Transform>
440                           </CADFace>
441                      </CADPart>
442                 </CADAssembly>
443            </CADLayer>
444            <GeoOrigin DEF='DeprecatedNodeUnquotedGeoSystemgeoSystem='"GD WE"'/>
445            <Viewpoint DEF='ViewHumanoidMissingCenterOfRotation'/>
446            <Shape DEF='EmptyShapeWithCommentSilencesWarning'>
447                 <!-- silence warning -->
448            </Shape>
449            <Shape>
450                 <Appearance>
451                      <Material DEF='IllegalColorValuesMaterialdiffuseColor='-1 1.2 0.3 0.4emissiveColor='-1 1.2 0.3 0.4specularColor='-1 1.2 0.3 0.4'/>
452                 </Appearance>
453            </Shape>
454            <Background DEF='BackgroundColorProblemsgroundColor='-1 1.2 0.3 0.4skyColor='-1 1.2 0.3 0.4'/>
455            <Fog DEF='FogColorProblemscolor='-1 1.2 0.3 0.4'/>
456            <DirectionalLight DEF='DirectionalLightColorProblemscolor='-1 1.2 0.3 0.4'/>
457            <PointLight DEF='PointLightColorProblemscolor='-1 1.2 0.3 0.4'/>
458            <SpotLight DEF='SpotLightColorProblemscolor='-1 1.2 0.3 0.4'/>
459            <ClipPlane DEF='IllegalPlaneEquationValuesplane='1 2 3 4 5'/>
460            <HAnimHumanoid DEF='notUniqueName1name='JimDandyversion='1.1'/>
461            <HAnimHumanoid DEF='notUniqueName2name='JimDandyversion='2.0'>
462                 <!-- keep the following Group node as first child so that it is reported by diagnostic test -->
463                 <Group DEF='HumanoidCannotContainChildrenNodesname='IllegalGroupChildrenNode'/>
464                 <HAnimJoint containerField='skeletonname='HumanoidRootulimit='0 0 0llimit='0 0 0'>
465 
                    <!-- HAnimJoint MissingComponentH-AnimLevel1 is a DEF node that has 1 USE node: USE_1 -->
                    <HAnimJoint DEF='MissingComponentH-AnimLevel1ulimit='0 0 0llimit='0 0 0'>
466                           <HAnimHumanoid DEF='incorrectlyNestedHumanoidMissingNameAttributeversion='2.0'/>
467                      </HAnimJoint>
468 
                    <!-- HAnimJoint MissingNameAttributeCheckContainerField is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                    <HAnimJoint DEF='MissingNameAttributeCheckContainerFieldulimit='0 0 0llimit='0 0 0'/>
469                      <HAnimJoint USE='MissingNameAttributeCheckContainerField'/>
470                      <HanimJoint DEF='ImproperCapitalizationOfNodeName'/>
471 
                    <!-- HAnimJoint duplicateName1 is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                    <HAnimJoint DEF='duplicateName1name='sacroiliaculimit='0 0 0llimit='0 0 0'/>
472 
                    <!-- HAnimJoint duplicateName2 is a DEF node that has 1 USE node: USE_1 -->
                    <HAnimJoint DEF='duplicateName2name='sacroiliaculimit='0 0 0llimit='0 0 0'/>
473                      <HAnimJoint USE='duplicateName1containerField='joints'/>
474 
                    <!-- ROUTE information for JointInterpolator node:  [from value_changed to MissingNameAttribute.translation ] -->
                    <PositionInterpolator DEF='JointInterpolatorkey='0 0keyValue='0 0 0 1 0 0'/>
475                      < ROUTE  fromNode='JointInterpolator' fromField='value_changed' toNode='MissingNameAttribute' toField='translation'/>
476 
                    <!-- HAnimJoint ImproperDEFname is a DEF node that has 1 USE node: USE_1 -->
                    <HAnimJoint DEF='ImproperDEFnamename='l_acromioclavicularulimit='0 0 0llimit='0 0 0'/>
477 
                    <!-- HAnimJoint hanim_HumanoidRoot is a DEF node that has 1 USE node: USE_1 -->
                    <HAnimJoint DEF='hanim_HumanoidRootname='HumanoidRootulimit='0 0 0llimit='0 0 0'>
478 
                         <!-- HAnimSegment JointNameSegmentNameHierarchyTest is a DEF node that has 1 USE node: USE_1 -->
                         <HAnimSegment DEF='JointNameSegmentNameHierarchyTestname='notSacrum'>
479                                <!-- the following construct is OK and should not throw errors -->
480 
                              <!-- HAnimSite hanim_Top_view is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
                              <HAnimSite DEF='hanim_Top_viewcontainerField='viewpointsname='Top_viewrotation='1 0 0 -1.57translation='0 3.5 0'>
481                                     <Viewpoint DEF='hanim_Top_viewpointcenterOfRotation='0 0.9 0description='Topposition='0 0 0'/>
482                                </HAnimSite>
483                           </HAnimSegment>
484 
                         <!-- HAnimJoint negativeCenterHeight is a DEF node that has 1 USE node: USE_1 -->
                         <HAnimJoint DEF='negativeCenterHeightcenter='0 -1 0name='negativeCenterHeightulimit='0 0 0llimit='0 0 0'>
485 
                              <!-- HAnimSegment IllegalChildrenContainerFields is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                              <HAnimSegment DEF='IllegalChildrenContainerFieldsname='IllegalChildrenContainerFields'>
486 
                                   <!-- HAnimSite negativeTranslationHeight is a DEF node that has 1 USE node: USE_1 -->
                                   <HAnimSite DEF='negativeTranslationHeightname='negativeTranslationHeighttranslation='0 -1 0'>
487                                          <HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode'/>
488                                     </HAnimSite>
489                                     <Coordinate/>
490                                     <CoordinateDouble/>
491                                </HAnimSegment>
492                           </HAnimJoint>
493 
                         <!-- HAnimJoint MismatchedJointCenter_l_knee is a DEF node that has 1 USE node: USE_1 -->
                         <HAnimJoint DEF='MismatchedJointCenter_l_kneecenter='1 2 3name='l_kneeulimit='0 0 0llimit='0 0 0'/>
494 
                         <!-- HAnimJoint MismatchedJointCenter_r_knee is a DEF node that has 1 USE node: USE_1 -->
                         <HAnimJoint DEF='MismatchedJointCenter_r_kneecenter='4 5 6name='r_kneeulimit='0 0 0llimit='0 0 0'/>
495                           <HAnimJoint USE='IllegalEmbeddedHAnimUse'/>
496 
                         <!-- HAnimSite IllegalNameIllegalParent is a DEF node that has 1 USE node: USE_1 -->
                         <HAnimSite DEF='IllegalNameIllegalParentname='IllegalNameIllegalParent'/>
497                           <!-- TODO test IllegalEmbeddedHAnimUse in another HAnimHumanoid -->
498                      </HAnimJoint>
499                 </HAnimJoint>
500                 <HAnimSite USE='hanim_Top_viewcontainerField='viewpoints'/>
501                 <HAnimSite USE='hanim_Top_viewcontainerField='viewpoints'/>
502                 <HAnimSegment USE='JointNameSegmentNameHierarchyTestcontainerField='segments'/>
503                 <HAnimSegment USE='IllegalChildrenContainerFieldscontainerField='segments'/>
504                 <!-- test for duplicated USE node -->
505                 <HAnimSegment USE='IllegalChildrenContainerFieldscontainerField='segments'/>
506                 <Coordinate DEF='HAnimCoordinateCorrectContainerFieldcontainerField='skinCoordpoint='0 0 0'/>
507                 <Coordinate DEF='HAnimCoordinateIncorrectContainerField'/>
508                 <CoordinateDouble DEF='HAnimCoordinateDoubleCorrectContainerFieldcontainerField='skinCoordpoint='0 0 0'/>
509                 <CoordinateDouble DEF='HAnimCoordinateDoubleIncorrectContainerField'/>
510                 <Normal DEF='HAnimNormalIncorrectContainerField'/>
511                 <HAnimJoint USE='MissingComponentH-AnimLevel1containerField='joints'/>
512                 <HAnimJoint USE='MissingNameAttributeCheckContainerFieldcontainerField='joints'/>
513                 <HAnimJoint USE='duplicateName1containerField='joints'/>
514                 <HAnimJoint USE='duplicateName2containerField='joints'/>
515                 <HAnimJoint USE='ImproperDEFnamecontainerField='joints'/>
516                 <HAnimJoint USE='hanim_HumanoidRootcontainerField='joints'/>
517                 <HAnimJoint USE='negativeCenterHeightcontainerField='joints'/>
518                 <HAnimJoint USE='MismatchedJointCenter_l_kneecontainerField='joints'/>
519                 <HAnimJoint USE='MismatchedJointCenter_r_kneecontainerField='joints'/>
520                 <HAnimSite USE='hanim_Top_viewcontainerField='sites'/>
521                 <HAnimSite USE='negativeTranslationHeightcontainerField='sites'/>
522                 <HAnimSite USE='IllegalNameIllegalParentcontainerField='sites'/>
523            </HAnimHumanoid>
524            <Sound DEF='NoChildren'/>
525            <AudioClip DEF='NoParentSoundNodedescription='bad clip reference'   url=' "blah" "https://www.web3d.org/x3d/content/examples/Basic/development/blah" '/>
526            <Sound class='must separate classes with;space characterslocation='0 2 0'>
527                 <AudioClip description='bad clip reference'   url=' "blah" "https://www.web3d.org/x3d/content/examples/Basic/development/blah" '/>
528            </Sound>
529            <Sound DEF='SoundDefaultslocation='0 2 0'>
530 
               <!-- AudioClip ReusableAudioClip is a DEF node that has 5 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5 -->
               <AudioClip DEF='ReusableAudioClipdescription='reusable'   url=' "../Vrml97Specification/click.wav" "https://www.web3d.org/x3d/content/examples/Basic/Vrml97Specification/click.wav" '/>
531            </Sound>
532            <Sound DEF='SoundMinNegativelocation='0 2 0minBack='-1minFront='-1'>
533                 <AudioClip USE='ReusableAudioClip'/>
534            </Sound>
535            <Sound DEF='SoundMaxNegativelocation='0 2 0maxBack='-10maxFront='-10'>
536                 <AudioClip USE='ReusableAudioClip'/>
537            </Sound>
538            <Sound DEF='SoundMinGreaterThanMaxlocation='0 2 0maxBack='11maxFront='11minBack='12minFront='12'>
539                 <AudioClip USE='ReusableAudioClip'/>
540            </Sound>
541            <Sound DEF='SoundMinGreaterThanDefaultMaxlocation='0 2 0minBack='13minFront='13'>
542                 <AudioClip USE='ReusableAudioClip'/>
543            </Sound>
544            <Sound DEF='SoundMaxLessThanDefaultMinlocation='0 2 0maxBack='0.5maxFront='0.5'>
545                 <AudioClip USE='ReusableAudioClip'/>
546            </Sound>
547            < ROUTE  fromNode='DuplicateROUTE' fromField='test1' toNode='test2' toField='test3'/>
548            < ROUTE  fromNode='DuplicateROUTE' fromField='test1' toNode='test2' toField='test3'/>
549            < ROUTE  fromNode='DuplicateROUTE' fromField='test1' toNode='test2' toField='test3'/>
550            < ROUTE  fromNode='NodeFollowsRoute1' fromField='children' toNode='NodeFollowsRoute2' toField='children'/>
551 
          <!-- ROUTE information for NodeFollowsRoute1 node:  [from children to NodeFollowsRoute2.children ] -->
          <Group DEF='NodeFollowsRoute1'>
552 
               <!-- ROUTE information for NodeFollowsRoute2 node:  [from NodeFollowsRoute1.children to children ] -->
               <Group DEF='NodeFollowsRoute2'>
553                      <!-- silence warning -->
554                 </Group>
555            </Group>
556            <Shape DEF='ElevationGridInsufficientHeights'>
557                 <ElevationGrid solid='falsexSpacing='0zDimension='3zSpacing='0height='1 2 3 4 5'/>
558            </Shape>
559            <Shape DEF='ElevationGridTooManyHeights'>
560                 <ElevationGrid solid='falsexSpacing='-1zDimension='3zSpacing='-1height='1 2 3 4 5 6 7'/>
561            </Shape>
562            <Shape DEF='ElevationGridBadDimensions'>
563                 <ElevationGrid solid='falsexDimension='-2zDimension='-3height='1 2 3 4 5 6'/>
564            </Shape>
565            <StaticGroup DEF='StaticGroupChildTestscontainerField='children'>
566                 <Group>
567                      <TimeSensor DEF='StaticGroupDescendantsCannotProduceEvents'/>
568                      <PositionInterpolator DEF='StaticGroupDescendantsCannotConsumeEvents'/>
569                      <PositionInterpolator USE='StaticGroupDescendantsCannotBeUsed'/>
570                 </Group>
571                 <!-- note mistake capitalization, correct form is ROUTE -->
572                 <Route fromField='fraction_changedfromNode='StaticGroupDescendantsCannotProduceEventstoField='set_fractiontoNode='StaticGroupDescendantsCannotConsumeEvents'/>
573            </StaticGroup>
574            <Group DEF='CaseSensitive'>
575                 <!-- test case sensitivity of DEF/USE -->
576            </Group>
577            <Group USE='CASESENSITIVE'/>
578            <Group>
579                 <TouchSensor DEF='PeerTouchSensor'/>
580                 <CylinderSensor DEF='PeerCylinderSensor'/>
581                 <Billboard DEF='PeerBillboard'/>
582            </Group>
583            <Inline DEF='RecursiveInlineInvocation'   url=' "TestSchematronDiagnostics.x3d" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.x3d" "TestSchematronDiagnostics.wrl" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.wrl" '/>
584            <Shape>
585                 <IndexedFaceSet DEF='IfsEmptyChildren'>
586                      <Coordinate DEF='EmptyCoordinate'/>
587                      <Color DEF='EmptyColor'/>
588                      <Normal DEF='EmptyNormal'/>
589                      <TextureCoordinate DEF='EmptyTextureCoordinate'/>
590                 </IndexedFaceSet>
591            </Shape>
592            <Shape>
593                 <IndexedFaceSet DEF='IfsSingletonChildren'>
594                      <Coordinate DEF='SingleCoordinatepoint='1 2 3'/>
595                      <Color DEF='SingleColorcolor='0.1 0.2 0.3'/>
596                      <Normal DEF='SingleNormalvector='0 1 0'/>
597                      <TextureCoordinate DEF='SingleTextureCoordinatepoint='0.4 0.8'/>
598                 </IndexedFaceSet>
599            </Shape>
600            <GeoLOD containerField='children'>
601                 <Shape DEF='rootNodeContainerFieldIsCorrect'/>
602            </GeoLOD>
603            <TextureProjector/>
604            <TextureProjectorParallel DEF='DistanceMismatchIllegalFieldOfViewfarDistance='.1fieldOfView='1 2 3 4 5nearDistance='20'/>
605       </Scene>
606  </X3D>
<!--

Visualization reports for HAnimHumanoid models: JimDandy HAnimHumanoid Report, JimDandy HAnimHumanoid Report
<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: "QuotedDEF", AnchorBookmark, AppearanceWithProtoInstanceChild, BackgroundColorProblems, BackgroundWithParentLOD, BadBoundingBoxValues, BadChild, BadContainerField, BadNameBadFieldValueNameMissingInitialization, BothUrlAndCDATA, CADFaceMultipleShapeChildren, CADFaceOneShapeChild, CaseSensitive, CharacterBeforeQuotes, ChildrenCorrectContainerField, ChildrenIncorrectContainerField, Clock, ColorInterpolatorColorProblems, containerFieldNot_shape, ContainsISchildButNoParentProtoDeclare, CountTests, DEF, DEF_USEinsideProtoDeclareScope, DEFAppendedSpace, DefaultImageData, DEFcontainsUSEcopyOfSelf, DEFdescriptionMatch, DEFEmbedded Space, DEFoutsideProtoDeclareScope, DEFPrependedSpace, DeprecatedNodeUnquotedGeoSystem, DirectionalLightColorProblems, DistanceMismatchIllegalFieldOfView, DoubleDeclaration2, DoubleDEF, DoubleDEF, DuplicatedCoordinatePointArray, DuplicatedDeclaration, DuplicateImageData, duplicateName1, duplicateName2, ElevationGridBadDimensions, ElevationGridInsufficientHeights, ElevationGridTooManyHeights, Embedded Blanks DEF, EmbeddedQuoteMarksOK, EmptyColor, EmptyCoordinate, EmptyGroup, EmptyGroupContainsComment, EmptyGroupInsideSwitch, EmptyNormal, EmptyShapeWithCommentSilencesWarning, EmptySwitchContainsROUTE, EmptyTextureCoordinate, EscapedQuoteMarkWarning, ExtrusionCrossSectionMiscountSpineMismatchCrossSectionMiscount, familyValuesMissingIntermediateQuotes, FirstTitle, FogColorProblems, FogWithParentLOD, FontStyleFieldsContainIllegalQuotes, GeometryNodeCollisionParentNeedsParentShapeWithProxyContainerField, GeometryNodeNeedsShapeParent, hanim_HumanoidRoot, hanim_Top_view, hanim_Top_viewpoint, HAnimCoordinateCorrectContainerField, HAnimCoordinateDoubleCorrectContainerField, HAnimCoordinateDoubleIncorrectContainerField, HAnimCoordinateIncorrectContainerField, HAnimNormalIncorrectContainerField, HasCDATAwithoutEcmascriptHeader, HasLegalCDATA, HasUrlNoCDATA, HelloWorld, HumanoidCannotContainChildrenNodes, IfsEmptyChildren, IfsSingletonChildren, IllegalBackgroundChild, IllegalChild, IllegalChildForLoadSensor, IllegalChildrenContainerFields, IllegalColorValuesMaterial, IllegalCombinationDEFUSE, IllegalDecimalPointsTest, IllegalFields, IllegalGeometryProxyNode, IllegalHAnimDisplacerInHAnimSiteNode, IllegalImageData, IllegalInfoQuotes, IllegalMetadataContainerField, IllegalMinusSignsTest, IllegalNameIllegalParent, IllegalParent1, IllegalParent2, IllegalParent3, IllegalParentChild-DEF-USE, IllegalPlaneEquationValues, IllegalTextureBackgroundChild, IllegalTextureBackgroundChildContainerField, IllegalValuesColor, IllegalValuesColorRGBA, IllegalViewpointGroupChild, ImageDataTest, ImproperCapitalizationOfNodeName, improperDEF, ImproperDEFname, IncorrectChildNodes, incorrectlyNestedHumanoidMissingNameAttribute, InterpolatorWithSingleKey, ISconnectDescription, JointInterpolator, JointNameSegmentNameHierarchyTest, LegalChild, LegalChild1, LegalChild2, LegalChild3, LegalGeoSystem, MismatchedJointCenter_l_knee, MismatchedJointCenter_r_knee, MismatchedKeyArrays, MismatchedKeyArraysSFVec3f, MissingComponentH-AnimLevel1, MissingIndex, MissingNameAttributeCheckContainerField, MissingParentShape, NavigationInfoWithParentLOD, NavigationInfoWithTypeALL, NeedQuoteMarks, negativeCenterHeight, negativeTranslationHeight, NoBackgroundChildrenAllowed, NoChildAppearance, NoChildGeometry, noChildNodeforUSE, NoChildren, NoChildrenNoUrl, NodeFollowsRoute1, NodeFollowsRoute2, NodeUrlVRML.wrl.PrecedingX3D.x3d, NoImageData, NoLocalFogV3.0, NoMaterialNoTexture, NoOutputROUTE, NoParentSoundNode, NormalPath, NoROUTE, NoROUTEs, NoROUTEsNoKeyValueArray, NoSpacesInDescription, NoTextureChildren, notUniqueName1, notUniqueName2, NoUrlIllegalChild, NoUrlNoCDATA, OI, OKviewpoint, OnlyFieldDeclarationsAllowedInProtoInterface, PeerBillboard, PeerCylinderSensor, PeerTouchSensor, PointLightColorProblems, PrototypeRootNode, RecursiveInlineInvocation, ReusableAudioClip, rootNodeContainerFieldIsCorrect, RouteButNoFields, SecondTitle, separateBackColorWrong, SingleColor, SingleCoordinate, SingleNormal, SingleProtoInstanceChild, SingleTextureCoordinate, SoundDefaults, SoundMaxLessThanDefaultMin, SoundMaxNegative, SoundMinGreaterThanDefaultMax, SoundMinGreaterThanMax, SoundMinNegative, SpotLightColorProblems, StaticGroupChildTests, StaticGroupDescendantsCannotConsumeEvents, StaticGroupDescendantsCannotProduceEvents, textureContainerField, TextureCoordinateGeneratorIllegalMode, TextureCoordinateGeneratorIllegalParameterCount, TextureTransformWithNoSiblingTextureNode, ThreeUnescapedQuoteMarksMissingSpaceEndsApostrophe, UnquotedTypeAndTransitionTypeErrors, UrlDotWrlPrecedesDotX3d, USEandDEFtogether, USEmismatchDEFnodeType, USEoutsideProtoDeclareScope, USEprecedesDEF, USEwithChildElement, ViewHumanoidMissingCenterOfRotation, ViewpointWithParentLOD, watchListContainerField, ZeroMagnitudeRotationAxes

Index for Viewpoint nodes: DEFdescriptionMatch, hanim_Top_viewpoint, ISconnectDescription, OKviewpoint, ViewHumanoidMissingCenterOfRotation, ViewpointWithParentLOD

Index for ExternProtoDeclare definitions: DoubleDeclarationUrlMissingPoundProtoName, DoubleDeclarationUrlMissingPoundProtoName, DoubleMixedDeclaration, ExternProtoDeclareAfterInstance, ExternProtoDeclareBeforeInstance, ExternProtoDeclareUrlVRML.wrl.MissingX3D.x3d, ExternProtoDeclareUrlVRML.wrl.PrecedingX3D.x3d, X3D

Index for ProtoDeclare definitions: DoubleMixedDeclaration, DoubleProtoDeclaration, DoubleProtoDeclaration, EmptyProtoInterfaceEmptyProtoBody, IllegalProtoInterface, MissingProtoBody, ProtoDeclareAfterInstance, ProtoDeclareBeforeInstance, ReferenceTest, X3D
-->
X3D Tooltips element index: Anchor, Appearance, AudioClip, Background, Billboard, BooleanSequencer, Box, CADAssembly, CADFace, CADLayer, CADPart, ClipPlane, Collision, Color, ColorInterpolator, ColorRGBA, component, connect, Coordinate, CoordinateDouble, CylinderSensor, DirectionalLight, ElevationGrid, ExternProtoDeclare, Extrusion, field, fieldValue, Fog, FontStyle, GeoLocation, GeoLOD, GeoMetadata, GeoOrigin, GeoViewpoint, Group, HAnimDisplacer, HAnimHumanoid, HAnimJoint, HanimJoint, HAnimSegment, HAnimSite, head, ImageTexture, IndexedFaceSet, IndexedQuadSet, Inline, IntegerTrigger, IS, LoadSensor, LocalFog, LOD, Material, meta, MetadataBoolean, MetadataDouble, MetadataFloat, MetadataSet, MetadataString, MovieTexture, MultiTexture, NavigationInfo, Normal, NormalInterpolator, OrientationInterpolator, OrthoViewpoint, PixelTexture, PointLight, PositionInterpolator, ProtoBody, ProtoDeclare, ProtoInstance, ProtoInterface, ROUTE, Route, ScalarInterpolator, Scene, Script, Shape, Sound, SpotLight, StaticGroup, Switch, Text, TextureBackground, TextureCoordinate, TextureCoordinateGenerator, TextureProjector, TextureProjectorParallel, TextureTransform, TimeSensor, TouchSensor, Transform, TwoSidedMaterial, unit, Viewpoint, ViewpointGroup, WorldInfo, X3D, accessType and type, XML data types, field types
<!--

🔖 Visualization report for HAnimHumanoid model notUniqueName1

=============================================================================================================================
HAnimHumanoid notUniqueName1 skeleton holds X3D3 HAnim1 joints/segments.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (0), : HAnimSegment (0), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (0)
=============================================================================================================================
HAnimHumanoid DEF='notUniqueName1 name='JimDandy' loa=''
skeleton


=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

Key to author-assist additions inserted in the HAnimHumanoid skeleton:

<HAnimHumanoid DEF='notUniqueName1' name='JimDandy' version ='1.1' >
 31            <!-- - illegal comment starts with extra hyphen - character -->
 32            <!-- - illegal comment has intermediate paired-hyphen - - characters -->
 66            <!-- test no other fields if USE present -->
 83            <!-- no DEF name -->
 89            <!-- no DEF name -->
 93            <!-- bogus ROUTEs to allow trapping deeper error -->
198            <!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField" protoField="isolatedConnectProtoField"/> -->
214            <!-- check for reserved word in name definitions -->
414            <!-- test of NeedsChildNode -->

</HAnimHumanoid>

🔖 Visualization report for HAnimHumanoid model notUniqueName2

=============================================================================================================================
HAnimHumanoid notUniqueName2 skeleton holds X3D3 HAnim2 joints/segments/sites.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (8), : HAnimSegment (2), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (3), @ skin nodes (0)
=============================================================================================================================
HAnimHumanoid DEF='notUniqueName2 name='JimDandy' loa=''
skeleton
  HumanoidRoot
  |  (HAnimJoint/@name not found)
=============================================================================================================================
HAnimHumanoid incorrectlyNestedHumanoidMissingNameAttribute skeleton holds X3D3 HAnim2 joints/segments.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (0), : HAnimSegment (0), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (0)
=============================================================================================================================
  | | HAnimHumanoid DEF='incorrectlyNestedHumanoidMissingNameAttribute name='' loa=''
skeleton


=============================================================================================================================
  |  (HAnimJoint/@name not found)
  | sacroiliac
  | sacroiliac
  | l_acromioclavicular
  | HumanoidRoot : notSacrum ^ Top_view
  |   negativeCenterHeight : IllegalChildrenContainerFields ^ negativeTranslationHeight % 
  |   l_knee
  |   r_knee

% HAnimSite negativeTranslationHeight holds 1 HAnimDisplacer node: HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode'

^ HAnimJoint HumanoidRoot holds 1 HAnimSite node: IllegalNameIllegalParent
^ HAnimSegment notSacrum holds 1 HAnimSite node: Top_view
^ HAnimSegment IllegalChildrenContainerFields holds 1 HAnimSite node: negativeTranslationHeight
=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

Key to author-assist additions inserted in the HAnimHumanoid skeleton:

  • <!-- HAnimSite/Viewpoint visualization shape -->
  • <Anchor description='HAnimSite hanim_Top_view Viewpoint ' url='"#hanim_Top_viewpoint"'>
      <LOD forceTransitions='true' range='0.04'>
       <WorldInfo info='"hide diamond when close"'/>
       <Shape DEF='HAnimSiteViewpointShape'> <IndexedFaceSet DEF='SiteViewpointDiamondIFS' coordIndex='0 1 2 -1 0 2 3 -1 0 3 4 -1 0 4 1 -1 5 2 1 -1 5 3 2 -1 5 4 3 -1 5 1 4 -1' creaseAngle='0.5'> <Coordinate point='0 0.010 0 -0.010 0 0 0 0 0.010 0.010 0 0 0 0 -0.010 0 -0.010 0'/> </IndexedFaceSet> <Appearance> <Material diffuseColor='1 1 0' transparency='0.3'/> </Appearance> </Shape>
      </LOD>
    </Anchor>
  • </HAnimSite> </HAnimSegment>
    </HAnimSite></HAnimSegment>
    </HAnimJoint> </HAnimJoint> </HAnimJoint>

















    <HAnimHumanoid DEF='notUniqueName2' name='JimDandy' version ='2.0' >
    497                           <!-- TODO test IllegalEmbeddedHAnimUse in another HAnimHumanoid -->
    481                                     <Viewpoint DEF='hanim_Top_viewpointcenterOfRotation='0 0.9 0description='Topposition='0 0 0'/>
    487                                          <HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode'/>
     31            <!-- - illegal comment starts with extra hyphen - character -->
     32            <!-- - illegal comment has intermediate paired-hyphen - - characters -->
     66            <!-- test no other fields if USE present -->
     83            <!-- no DEF name -->
     89            <!-- no DEF name -->
     93            <!-- bogus ROUTEs to allow trapping deeper error -->
    198            <!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField" protoField="isolatedConnectProtoField"/> -->
    214            <!-- check for reserved word in name definitions -->
    414            <!-- test of NeedsChildNode -->

    500                 <HAnimSite USE='hanim_Top_viewcontainerField='viewpoints'/>
    501                 <HAnimSite USE='hanim_Top_viewcontainerField='viewpoints'/>
    502                 <HAnimSegment USE='JointNameSegmentNameHierarchyTestcontainerField='segments'/>
    503                 <HAnimSegment USE='IllegalChildrenContainerFieldscontainerField='segments'/>
    504                 <!-- test for duplicated USE node -->
    505                 <HAnimSegment USE='IllegalChildrenContainerFieldscontainerField='segments'/>
    511                 <HAnimJoint USE='MissingComponentH-AnimLevel1containerField='joints'/>
    512                 <HAnimJoint USE='MissingNameAttributeCheckContainerFieldcontainerField='joints'/>
    513                 <HAnimJoint USE='duplicateName1containerField='joints'/>
    514                 <HAnimJoint USE='duplicateName2containerField='joints'/>
    515                 <HAnimJoint USE='ImproperDEFnamecontainerField='joints'/>
    516                 <HAnimJoint USE='hanim_HumanoidRootcontainerField='joints'/>
    517                 <HAnimJoint USE='negativeCenterHeightcontainerField='joints'/>
    518                 <HAnimJoint USE='MismatchedJointCenter_l_kneecontainerField='joints'/>
    519                 <HAnimJoint USE='MismatchedJointCenter_r_kneecontainerField='joints'/>
    520                 <HAnimSite USE='hanim_Top_viewcontainerField='sites'/>
    521                 <HAnimSite USE='negativeTranslationHeightcontainerField='sites'/>
    522                 <HAnimSite USE='IllegalNameIllegalParentcontainerField='sites'/>

    </HAnimHumanoid>

    Event Graph ROUTE Table entries with 10 ROUTE connections 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.

    HasLegalCDATA
    Script
    No ROUTE connection found for output events from this node.
    This Script has no direct access to other nodes. 


    ProtoInstance
    NodeSubstituteNoDeclaration
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 


    ProtoInstance
    NodeSubstituteNoDeclaration
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 


    ProtoInstance
    NoDeclaration
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 


    ProtoInstance
    ExternProtoDeclareBeforeInstance
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 


    ProtoInstance
    ExternProtoDeclareAfterInstance
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 


    ProtoInstance
    ProtoDeclareBeforeInstance
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 


    ProtoInstance
    ProtoDeclareAfterInstance
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 


    ProtoInstance
    X3D
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declaration with
    direct access to other nodes, and thus has potential to produce run-time animation. 


    ProtoInstance
    ReferenceTest
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 

    BadNameBadFieldValueNameMissingInitialization
    ProtoInstance
    X3D
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 

    DoubleDeclaration2
    ProtoInstance
    DoubleMixedDeclaration
    No ROUTE connection found for output events from this node.
    This ProtoInstance contains SFNode/MFNode fieldValue declarations with
    direct access to other nodes, and thus has potential to produce run-time animation. 

    Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

    -->
    <!-- Online at
    https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnosticsIndex.html -->
    <!-- Version control at
    https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.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. -->