<?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">
<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 ' >
<head>
<component level='3'/>
<component name='Geometry2D'/>
<component level='3name='Geometry2D'/>
<component level='3name='Geometry2D'/>
<unit category='angleconversionFactor='-1name='nonPositiveConversionFactor'/>
<unit category='angleconversionFactor='-1name='nonPositiveConversionFactor'/>
<meta name='titlecontent=' TestSchematronDiagnostics.x3d '/>
<meta name='descriptioncontent='Test Schematron diagnostics capabilities for detecting various content errors and style warnings.'/>
<meta name='descriptioncontent='Second meta tag to test warning that two description meta tags are present.'/>
<meta name='creatorcontent='Don Brutzman'/>
<meta name='createdcontent='19 October 2008'/>
<meta name='modifiedcontent='25 October 2020'/>
<meta name=' warning content=' The regex is not finding IllegalMinusSignsTest. '/>
<meta name=' error content=' Test scene with many errors, primarily intended to exercise most of the rules in the X3D Schematron diagnostic set. '/>
<meta name=' warning content=' Test scene with many warnings embedded in comments. '/>
<meta name='hintcontent='Test scene with many hints embedded in comments.'/>
<meta name='infocontent='Perhaps the most erroneous X3D scene in the world!'/>
<meta name='infocontent='Perhaps the most erroneous X3D scene in the world!'/>
<meta name='referencecontent=' https://www.web3d.org/x3d/tools/schematron/X3dSchematronValidityChecks.sch '/>
<meta name='referencecontent=' https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html '/>
<meta name='referencecontent=' https://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!--

Visualization reports for HAnimHumanoid models: JimDandy HAnimHumanoid Report, JimDandy HAnimHumanoid Report
to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- 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
-->
<Scene USE=' improperUSE'>
<!-- - illegal comment starts with extra hyphen - character -->
<!-- - illegal comment has intermediate paired-hyphen - - characters -->
<TouchSensor USE=' IllegalCombinationDEFUSE'/>
<CylinderSensor DEF='DoubleDEFenabled='false'/>
<TimeSensor DEF='DoubleDEF'/>
<WorldInfo DEF='FirstTitletitle='title #1'/>
<WorldInfo DEF='SecondTitletitle='title #2'/>
<WorldInfo DEF='DEFPrependedSpace'/>
<WorldInfo DEF='DEFEmbedded Space'/>
<WorldInfo DEF='DEFAppendedSpace'/>
<WorldInfo DEF='IllegalInfoQuotesinfo='"WorldInfo info strings need to be quoted"'/>
<WorldInfo DEF='IllegalChild'>
<WorldInfo/>
</WorldInfo>
<WorldInfo DEF='LegalChild'>
<MetadataString/>
</WorldInfo>
<Anchor DEF='NoChildrenNoUrl'/>
<Anchor DEF='AnchorBookmarkparameter='"target=unquoted"'
  url=' "#missingBookmark" ' >
<Group/>
</Anchor>
<Inline DEF='HelloWorld'
  url=' "../HelloWorld.x3d" "https://www.web3d.org/x3d/content/examples/Basic/HelloWorld.x3d" "../HelloWorld.wrl" ' />

<Inline DEF='UrlDotWrlPrecedesDotX3d'
  url=' "test.wrl" test.x3d "adjacentquote" "marks" ' />

<Inline DEF='NoUrlIllegalChild'>
<WorldInfo/>
</Inline>
<Inline DEF='NodeUrlVRML.wrl.PrecedingX3D.x3d'
  url=' "HelloWorld.wrl" HelloWorld.x3d' />

<ExternProtoDeclare name='ExternProtoDeclareUrlVRML.wrl.PrecedingX3D.x3d'
  url=' "HelloWorld.wrl" HelloWorld.x3d' />

<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" ' />

<Shape DEF='NoChildAppearance'>
<Box/>
</Shape>
<Shape DEF='NoChildGeometry'>
<Appearance DEF='NoMaterialNoTexture'/>
</Shape>
<!-- test no other fields if USE present -->
<Shape USE=' NoChildAppearance'/>
<Shape USE=' NoChildAppearance'/>
<Shape USE=' NoChildAppearance'/>
<Shape DEF='USEwithChildElement'>
<Box/>
<Appearance DEF='AppearanceWithProtoInstanceChild'>
<ProtoInstance name='NodeSubstituteNoDeclaration'/>
</Appearance>
</Shape>
<Appearance DEF='MissingParentShape'/>
<Shape USE=' USEwithChildElement'>
<Appearance USE=' NoMaterialNoTexture'/>
</Shape>
<Shape DEF='SingleProtoInstanceChild'>
<ProtoInstance name='NodeSubstituteNoDeclaration'/>
</Shape>
<!-- no DEF name -->
<TimeSensor DEF='NoOutputROUTE'/>
<TimeSensor DEF='ClockcycleInterval='100loop='true'/>
<ColorInterpolator/>
<ColorInterpolator DEF='InterpolatorWithSingleKeykey='0'/>
<ColorInterpolator DEF='ColorInterpolatorColorProblemskey='0keyValue='-1 1.2 0.3 0.4'/>
<!-- no DEF name -->
<PositionInterpolator DEF='NoROUTEsNoKeyValueArraykey='0 0'/>
<!-- ROUTE information for MismatchedKeyArrays node:  [self-route from value_changed to set_fraction ] -->
<ScalarInterpolator DEF='MismatchedKeyArrayskey='0keyValue='0 0'/>

<!-- ROUTE information for MismatchedKeyArraysSFVec3f node:  [self-route from value_changed to set_fraction ] -->
<NormalInterpolator DEF='MismatchedKeyArraysSFVec3fkey='0 1keyValue='0 0 0 1 1'/>

<!-- bogus ROUTEs to allow trapping deeper error -->
< ROUTE  fromNode=' MismatchedKeyArrays' fromField='value_changed' toNode=' MismatchedKeyArrays' toField='set_fraction'/>
< ROUTE  fromNode=' MismatchedKeyArraysSFVec3f' fromField='value_changed' toNode=' MismatchedKeyArraysSFVec3f' toField='set_fraction'/>
<BooleanSequencer/>
<BooleanSequencer DEF='NoROUTEskey='0 0.5 1keyValue='true false true'/>
<IntegerTrigger/>
<IntegerTrigger DEF='NoROUTE'/>
<OrientationInterpolator DEF='OI'/>
<LoadSensor DEF='ChildrenIncorrectContainerField'> </LoadSensor>
<LoadSensor DEF='ChildrenCorrectContainerField'>
<ImageTexture DEF='watchListContainerFieldcontainerField='watchList'/>
</LoadSensor>
<LoadSensor DEF='IncorrectChildNodes'>
<Group containerField='watchList'/>
<Anchor DEF='IllegalChildForLoadSensor'/>
</LoadSensor>
<Script DEF='HasLegalCDATA'>
<field name='duplicatedFieldNametype='SFBoolaccessType='inputOnly'/>
<field name='duplicatedFieldNametype='SFBoolaccessType='inputOnly'/>
<![CDATA[
      
ecmascript:
function initialize()
{
   // initialize() method silences ROUTE check
}

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

    

    
]]>
</Script>
<Script DEF='HasUrlNoCDATA'
  url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" ' >
</Script>
<Script DEF='NoUrlNoCDATA'>
</Script>
<Script DEF='BothUrlAndCDATA'
  url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" ' >
<field name='inputFunctionDefinedTwicetype='SFBoolaccessType='inputOnly'/>
<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
}

    
]]>
</Script>
<Script DEF='RouteButNoFields'
  url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" ' >
</Script>
< ROUTE  fromNode=' NoFields' fromField='blah' toNode=' NoFields' toField='blah'/>
<ProtoInstance name='NoDeclaration'/>
<ProtoDeclare name='MissingProtoBody'/>
<WorldInfo DEF='DEFoutsideProtoDeclareScope'/>
<ProtoDeclare name='DoubleMixedDeclarationDEF='DuplicatedDeclaration'>
<ProtoBody>
<Group/>
<Viewpoint DEF='ISconnectDescription'>
<IS>
<connect nodeField='descriptionprotoField='description'/>
</IS>
</Viewpoint>
<!-- TODO not yet working... -->
<WorldInfo USE=' DEFoutsideProtoDeclareScope'/>
<WorldInfo DEF='USEoutsideProtoDeclareScope'/>
<WorldInfo DEF='DEF_USEinsideProtoDeclareScope'/>
<WorldInfo USE=' DEF_USEinsideProtoDeclareScope'/>
</ProtoBody>
</ProtoDeclare>
<WorldInfo USE=' USEoutsideProtoDeclareScope'/>
<ExternProtoDeclare name='DoubleMixedDeclaration'
  url=' http://bogus#DifferentRemotePrototypeName ' />

<ProtoInstance name='DoubleMixedDeclarationDEF='DoubleDeclaration2'>
<fieldValue name='duplicatedFieldValueNamevalue='blah'/>
<fieldValue name='duplicatedFieldValueName'/>
<fieldValue value='noName'/>
</ProtoInstance>
<ProtoDeclare name='DoubleProtoDeclaration'
  url=' "http:/bogus" "https://www.web3d.org/x3d/content/examples/Basic/development/http:/bogus" ' />

<ProtoDeclare name='DoubleProtoDeclaration'
  url=' http:///bogus ' />

<ExternProtoDeclare name='DoubleDeclarationUrlMissingPoundProtoName'
  url=' http:///bogus ' />

<ExternProtoDeclare name='DoubleDeclarationUrlMissingPoundProtoName'
  url=' "http:/bogus" "https://www.web3d.org/x3d/content/examples/Basic/development/http:/bogus" ' />

<ProtoDeclare name='EmptyProtoInterfaceEmptyProtoBody'>
<ProtoInterface/>
<ProtoBody/>
</ProtoDeclare>
<ProtoDeclare name='IllegalProtoInterface'>
<ProtoInterface> </ProtoInterface>
<ProtoBody>
<Group/>
</ProtoBody>
</ProtoDeclare>
<ExternProtoDeclare name='ExternProtoDeclareBeforeInstance'
  url=' "httpsMissing" "https://www.web3d.org/x3d/content/examples/Basic/development/httpsMissing" ' />

<ProtoInstance name='ExternProtoDeclareBeforeInstance'/>
<ProtoInstance name='ExternProtoDeclareAfterInstance'/>
<ExternProtoDeclare name='ExternProtoDeclareAfterInstance'
  url=' "httpMissing" "https://www.web3d.org/x3d/content/examples/Basic/development/httpMissing" ' />

<ProtoDeclare name='ProtoDeclareBeforeInstance'>
<ProtoBody>
<Group/>
</ProtoBody>
</ProtoDeclare>
<ProtoInstance name='ProtoDeclareBeforeInstance'/>
<ProtoInstance name='ProtoDeclareAfterInstance'/>
<ProtoDeclare name='ProtoDeclareAfterInstance'>
<ProtoBody>
<Group>
<IS>
<connect nodeField='danglingConnectNodeFieldprotoField='danglingConnectProtoField'/>
</IS>
</Group>
</ProtoBody>
</ProtoDeclare>
<Group DEF='ContainsISchildButNoParentProtoDeclare'>
<IS>
<connect nodeField='isolatedConnectNodeFieldprotoField='isolatedConnectProtoField'/>
</IS>
</Group>
<!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField"
protoField="isolatedConnectProtoField"/> -->

<Shape DEF='BadBoundingBoxValuesbboxCenter='1a 2b 3cbboxSize='-1 -2 -3'>
<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'/>
<!-- check for reserved word in DEF -->
<Appearance DEF='DEF'>
<TwoSidedMaterial DEF='separateBackColorWrongbackShininess='0.123'/>
</Appearance>
</Shape>
< ROUTE  fromNode=' blah' fromField='set_blah' toNode=' bleah' toField='bleah_changed'/>
<Viewpoint DEF='OKviewpointdescription='this viewpoint is OK'/>
<Viewpoint DEF='DEFdescriptionMatchdescription='DEFdescriptionMatch'/>
<OrthoViewpoint DEF='NoSpacesInDescriptiondescription='NeedToPutSpacesInDescription'/>
<GeoViewpoint DEF='IllegalFieldsnavType='"OTHER"containerField='children'/>
<GeoMetadata DEF='BadChildcontainerField='children'>
<GeoViewpoint DEF='BadContainerFieldcontainerField='children'/>
</GeoMetadata>
<!-- check for reserved word in name definitions -->
<ProtoDeclare name='X3D'>
<ProtoBody>
<Group DEF='PrototypeRootNode'/>
</ProtoBody>
</ProtoDeclare>
<ExternProtoDeclare name='X3D'>
<field name='X3Dtype='SFBoolaccessType='inputOnly'/>
</ExternProtoDeclare>
<ProtoInstance name='X3DDEF='BadNameBadFieldValueNameMissingInitialization'>
<fieldValue name='X3D'/>
</ProtoInstance>
<ProtoInstance name='X3D'>
<fieldValue name='X3Dvalue='doubleInitialization'>
<Shape/>
</fieldValue>
</ProtoInstance>
<LOD>
<Background DEF='BackgroundWithParentLOD'/>
<Fog DEF='FogWithParentLOD'/>
<NavigationInfo DEF='NavigationInfoWithParentLOD'/>
<Viewpoint DEF='ViewpointWithParentLOD'/>
</LOD>
<ViewpointGroup DEF='IllegalViewpointGroupChild'>
<Transform/>
</ViewpointGroup>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='NoImageData'/>
</Appearance>
</Shape>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='IllegalImageDataimage='1 a b c d'/>
</Appearance>
</Shape>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='DefaultImageData'/>
</Appearance>
</Shape>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='DuplicateImageData'/>
</Appearance>
</Shape>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='ImageDataTestimage='1 1 1 0xAA'/>
</Appearance>
</Shape>
<WorldInfo USE=' USEandDEFtogether'/>
<WorldInfo USE=' USEprecedesDEF'/>
<WorldInfo DEF='USEprecedesDEF'/>
<WorldInfo USE=' noDEFforUSE'/>
<WorldInfo DEF='noChildNodeforUSE'/>
<WorldInfo USE=' noChildNodeforUSE'>
<MetadataSet>
<MetadataString name='someStringArrayvalue='"unquoted string values"'/>
</MetadataSet>
</WorldInfo>
<Group DEF='DEFcontainsUSEcopyOfSelf'>
<Group USE=' DEFcontainsUSEcopyOfSelf'/>
</Group>
<WorldInfo DEF='USEmismatchDEFnodeType'/>
<Group USE=' USEmismatchDEFnodeType'/>
<LocalFog DEF='NoLocalFogV3.0'/>
<PointLight/>
<Shape>
<IndexedFaceSet DEF='CountTestscreaseAngle='-1.234coordIndex='0 1 2 -1'>
<Coordinate point='0 0 0 0 1 0 1 0 0 5'/>
<Color DEF='IllegalValuesColorcolor='-1 2 3'/>
<ColorRGBA DEF='IllegalValuesColorRGBAcolor='-1 1.2 0.3 0.4'/>
<TextureCoordinate/>
<TextureCoordinateGenerator/>
</IndexedFaceSet>
<Appearance USE=' NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='CharacterBeforeQuotesstring='x " "'>
<FontStyle family='"unquotedFontFamilyName"justify='"unquotedIllegalJustification"'/>
</Text>
<Appearance USE=' NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='ThreeUnescapedQuoteMarksMissingSpaceEndsApostrophestring='"" x" ''>
<FontStyle DEF='familyValuesMissingIntermediateQuotesfamily='"SANS SERIF"justify='"BEGIN" "BEGIN"'/>
</Text>
<Appearance USE=' NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='EscapedQuoteMarkWarningstring='"here is a single escaped \" quote mark character"'>
<FontStyle justify='"IllegalValue"'/>
</Text>
<Appearance USE=' NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='NeedQuoteMarksstring='"quote marks are required for single string"'>
<FontStyle/>
</Text>
<Appearance USE=' NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='EmbeddedQuoteMarksOKstring='"plain text with \"quote marks\" embedded"'>
<FontStyle DEF='FontStyleFieldsContainIllegalQuoteslanguage='"noquo"style='"PLAIN"'/>
</Text>
<Appearance USE=' NoMaterialNoTexture'/>
</Shape>
<Shape>
<IndexedQuadSet DEF='MissingIndexccw='truecolorPerVertex='truenormalPerVertex='truesolid='true'>
<Coordinate DEF='DuplicatedCoordinatePointArraypoint='0 0 0 0 1 0 1 0 0 5'/>
</IndexedQuadSet>
<Appearance USE=' NoMaterialNoTexture'/>
</Shape>
<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'/>
<GeoLocation DEF='LegalGeoSystemgeoCoords='36.607 -121.885 0.0containerField='children'/>
<ProtoDeclare name='ReferenceTest'>
<ProtoInterface>
<field name='defaultTesttype='SInt32value='78accessType='initializeOnly'/>
<field name='incorrectInitializationSFColorRGBAtype='SFColorRGBAvalue='1 1 1accessType='initializeOnly'/>
</ProtoInterface>
<ProtoBody>
<Script
  url=' "http:///bogus" ' >
<field name='missingInitializationValue1type='SFBoolaccessType='initializeOnly'/>
<field name='missingInitializationValue2type='SFInt32accessType='initializeOnly'/>
<field name='incorrectInitializationSFVec3ftype='SFVec3fvalue='0.0accessType='initializeOnly'/>
<field name='incorrectInitializationMFColortype='MFColorvalue='1 2 3 4 5 6 7accessType='initializeOnly'/>
<field name='missingInitializationValueHasIStype='SFBoolvalue='trueaccessType='initializeOnly'/>
<fieldValue name='shouldBeField'/>
<IS>
<connect nodeField='missingInitializationValue2protoField='defaultTest'/>
<connect nodeField='missingInitializationValueHasISprotoField='test'/>
</IS>
</Script>
<!-- Subsequent nodes do not render, but still must be a valid X3D subgraph -->
</ProtoBody>
</ProtoDeclare>
<ProtoInstance name='ReferenceTest'>
<fieldValue name='defaultTestvalue='78'/>
<fieldValue name='incorrectInitializationSFColorRGBAvalue='1 1 1 1 1'/>
<field name='shouldBeFieldValue'/>
</ProtoInstance>
<Transform DEF='ZeroMagnitudeRotationAxesscaleOrientation='0 0 0 0'/>
<Box DEF='GeometryNodeNeedsShapeParent'/>
<Collision DEF='IllegalGeometryProxyNode'> </Collision>
<NavigationInfo DEF='UnquotedTypeAndTransitionTypeErrorstransitionType='"ALTERNATE"type='OTHER'/>
<NavigationInfo DEF='NavigationInfoWithTypeALLtype='"ALL"'/>
<Group DEF='IllegalParentChild-DEF-USE'>
<Group USE=' IllegalParentChild-DEF-USE'/>
</Group>
<CADLayer name='contains whitespace and incorrect boolean valuevisible='true false wrong'/>
<Shape>
<ImageTexture DEF='IllegalParent1'/>
<MovieTexture DEF='IllegalParent2'/>
<PixelTexture DEF='IllegalParent3'/>
</Shape>
<Shape>
<TextureTransform DEF='TextureTransformWithNoSiblingTextureNode'/>
</Shape>
<Shape>
<Appearance>
<TextureTransform USE=' TextureTransformWithNoSiblingTextureNode'/>
<TextureCoordinateGenerator DEF='TextureCoordinateGeneratorIllegalModemode='Bogus'/>
<TextureCoordinateGenerator DEF='TextureCoordinateGeneratorIllegalParameterCountmode='NOISEparameter='1 2 3 4'/>
</Appearance>
</Shape>
<Shape>
<Appearance>
<MultiTexture DEF='NoTextureChildrenfunction='"BogusFunction1Value" "BogusFunction2Value" "mode='"BogusMode1Value" BogusMode2Value"source='"BogusSourceValue"'/>
</Appearance>
</Shape>
<Background DEF='NoBackgroundChildrenAllowed'>
<ImageTexture DEF='IllegalBackgroundChild'/>
</Background>
<TextureBackground>
<ImageTexture DEF='LegalChild1'/>
<MovieTexture DEF='LegalChild2'/>
<PixelTexture DEF='LegalChild3'/>
<Group DEF='IllegalTextureBackgroundChild'/>
<ImageTexture DEF='IllegalTextureBackgroundChildContainerFieldcontainerField='frontUrl'/>
</TextureBackground>
<Group DEF='Embedded Blanks DEF'/>
<Group USE=' Embedded Blanks USE'/>
<Group DEF='"QuotedDEF"'/>
<Group USE=' "QuotedUSE"'/>
<MetadataSet>
<MetadataBoolean/>
<MetadataFloat containerField='value'/>
<MetadataDouble containerField='illegalName'/>
</MetadataSet>
<MetadataString DEF='IllegalMetadataContainerFieldcontainerField='value'/>
<ScalarInterpolator DEF='IllegalDecimalPointsTestkey='0.00.5 1.0keyValue='1 2 3'/>
<ScalarInterpolator DEF='IllegalMinusSignsTestkey='0.0 0.5 1.0keyValue='-1-2 3'/>
<!-- test of NeedsChildNode -->
<Group DEF='EmptyGroup'/>
<Switch whichChoice='-1'>
<!-- test of NeedsChildNode -->
<Group DEF='EmptyGroupInsideSwitch'/>
</Switch>
<Group DEF='EmptyGroupContainsComment'>
<!-- test of NeedsChildNode -->
</Group>
<Switch DEF='EmptySwitchContainsROUTEwhichChoice='-1'>
<!-- test of NeedsChildNode -->
< ROUTE  fromNode=' NoFields' fromField='blah' toNode=' NoFields' toField='blah'/>
</Switch>
<CADLayer visible='false'>
<CADAssembly>
<CADPart>
<CADFace DEF='CADFaceOneShapeChild'>
<Transform containerField='shape'>
<Shape/>
</Transform>
</CADFace>
<CADFace DEF='CADFaceMultipleShapeChildren'>
<Transform DEF='containerFieldNot_shape'>
<Shape/>
<Shape/>
</Transform>
</CADFace>
</CADPart>
</CADAssembly>
</CADLayer>
<GeoOrigin DEF='DeprecatedNodeUnquotedGeoSystemgeoSystem='"GD WE"'/>
<Viewpoint DEF='ViewHumanoidMissingCenterOfRotation'/>
<Shape DEF='EmptyShapeWithCommentSilencesWarning'>
<!-- silence warning -->
</Shape>
<Shape>
<Appearance>
<Material DEF='IllegalColorValuesMaterialdiffuseColor='-1 1.2 0.3 0.4emissiveColor='-1 1.2 0.3 0.4specularColor='-1 1.2 0.3 0.4'/>
</Appearance>
</Shape>
<Background DEF='BackgroundColorProblemsgroundColor='-1 1.2 0.3 0.4skyColor='-1 1.2 0.3 0.4'/>
<Fog DEF='FogColorProblemscolor='-1 1.2 0.3 0.4'/>
<DirectionalLight DEF='DirectionalLightColorProblemscolor='-1 1.2 0.3 0.4'/>
<PointLight DEF='PointLightColorProblemscolor='-1 1.2 0.3 0.4'/>
<SpotLight DEF='SpotLightColorProblemscolor='-1 1.2 0.3 0.4'/>
<ClipPlane DEF='IllegalPlaneEquationValuesplane='1 2 3 4 5'/>
<HAnimHumanoid DEF='notUniqueName1name='JimDandyversion='1.1'/>
<HAnimHumanoid DEF='notUniqueName2name='JimDandyversion='2.0'>
<!-- keep the following Group node as first child so that it is reported by diagnostic test -->
<Group DEF='HumanoidCannotContainChildrenNodesname='IllegalGroupChildrenNode'/>
<HAnimJoint containerField='skeletonname='HumanoidRootulimit='0 0 0llimit='0 0 0'>
<HAnimJoint DEF='MissingComponentH-AnimLevel1ulimit='0 0 0llimit='0 0 0'>
<HAnimHumanoid DEF='incorrectlyNestedHumanoidMissingNameAttributeversion='2.0'/>
</HAnimJoint>
<HAnimJoint DEF='MissingNameAttributeCheckContainerFieldulimit='0 0 0llimit='0 0 0'/>
<HAnimJoint USE=' MissingNameAttributeCheckContainerField'/>
<HanimJoint DEF='ImproperCapitalizationOfNodeName'/>
<HAnimJoint DEF='duplicateName1name='sacroiliaculimit='0 0 0llimit='0 0 0'/>
<HAnimJoint DEF='duplicateName2name='sacroiliaculimit='0 0 0llimit='0 0 0'/>
<HAnimJoint USE=' duplicateName1containerField='joints'/>
<!-- ROUTE information for JointInterpolator node:  [from value_changed to MissingNameAttribute.translation ] -->
<PositionInterpolator DEF='JointInterpolatorkey='0 0keyValue='0 0 0 1 0 0'/>

< ROUTE  fromNode=' JointInterpolator' fromField='value_changed' toNode=' MissingNameAttribute' toField='translation'/>
<HAnimJoint DEF='ImproperDEFnamename='l_acromioclavicularulimit='0 0 0llimit='0 0 0'/>
<HAnimJoint DEF='hanim_HumanoidRootname='HumanoidRootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment DEF='JointNameSegmentNameHierarchyTestname='notSacrum'>
<!-- the following construct is OK and should not throw errors -->
<HAnimSite DEF='hanim_Top_viewcontainerField='viewpointsname='Top_viewrotation='1 0 0 -1.57translation='0 3.5 0'>
<Viewpoint DEF='hanim_Top_viewpointcenterOfRotation='0 0.9 0description='Topposition='0 0 0'/>
</HAnimSite>
</HAnimSegment>
<HAnimJoint DEF='negativeCenterHeightcenter='0 -1 0name='negativeCenterHeightulimit='0 0 0llimit='0 0 0'>
<HAnimSegment DEF='IllegalChildrenContainerFieldsname='IllegalChildrenContainerFields'>
<HAnimSite DEF='negativeTranslationHeightname='negativeTranslationHeighttranslation='0 -1 0'>
<HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode'/>
</HAnimSite>
<Coordinate/>
<CoordinateDouble/>
</HAnimSegment>
</HAnimJoint>
<HAnimJoint DEF='MismatchedJointCenter_l_kneecenter='1 2 3name='l_kneeulimit='0 0 0llimit='0 0 0'/>
<HAnimJoint DEF='MismatchedJointCenter_r_kneecenter='4 5 6name='r_kneeulimit='0 0 0llimit='0 0 0'/>
<HAnimJoint USE=' IllegalEmbeddedHAnimUse'/>
<HAnimSite DEF='IllegalNameIllegalParentname='IllegalNameIllegalParent'/>
<!-- TODO test IllegalEmbeddedHAnimUse in another HAnimHumanoid -->
</HAnimJoint>
</HAnimJoint>
<HAnimSite USE=' hanim_Top_viewcontainerField='viewpoints'/>
<HAnimSite USE=' hanim_Top_viewcontainerField='viewpoints'/>
<HAnimSegment USE=' JointNameSegmentNameHierarchyTestcontainerField='segments'/>
<HAnimSegment USE=' IllegalChildrenContainerFieldscontainerField='segments'/>
<!-- test for duplicated USE node -->
<HAnimSegment USE=' IllegalChildrenContainerFieldscontainerField='segments'/>
<Coordinate DEF='HAnimCoordinateCorrectContainerFieldcontainerField='skinCoordpoint='0 0 0'/>
<Coordinate DEF='HAnimCoordinateIncorrectContainerField'/>
<CoordinateDouble DEF='HAnimCoordinateDoubleCorrectContainerFieldcontainerField='skinCoordpoint='0 0 0'/>
<CoordinateDouble DEF='HAnimCoordinateDoubleIncorrectContainerField'/>
<Normal DEF='HAnimNormalIncorrectContainerField'/>
<HAnimJoint USE=' MissingComponentH-AnimLevel1containerField='joints'/>
<HAnimJoint USE=' MissingNameAttributeCheckContainerFieldcontainerField='joints'/>
<HAnimJoint USE=' duplicateName1containerField='joints'/>
<HAnimJoint USE=' duplicateName2containerField='joints'/>
<HAnimJoint USE=' ImproperDEFnamecontainerField='joints'/>
<HAnimJoint USE=' hanim_HumanoidRootcontainerField='joints'/>
<HAnimJoint USE=' negativeCenterHeightcontainerField='joints'/>
<HAnimJoint USE=' MismatchedJointCenter_l_kneecontainerField='joints'/>
<HAnimJoint USE=' MismatchedJointCenter_r_kneecontainerField='joints'/>
<HAnimSite USE=' hanim_Top_viewcontainerField='sites'/>
<HAnimSite USE=' negativeTranslationHeightcontainerField='sites'/>
<HAnimSite USE=' IllegalNameIllegalParentcontainerField='sites'/>
</HAnimHumanoid>
<Sound DEF='NoChildren'/>
<AudioClip DEF='NoParentSoundNodedescription='bad clip reference'
  url=' "blah" "https://www.web3d.org/x3d/content/examples/Basic/development/blah" ' />

<Sound class='must separate classes with;space characterslocation='0 2 0'>
<AudioClip description='bad clip reference'
  url=' "blah" "https://www.web3d.org/x3d/content/examples/Basic/development/blah" ' />
</Sound>
<Sound DEF='SoundDefaultslocation='0 2 0'> </Sound>
<Sound DEF='SoundMinNegativelocation='0 2 0minBack='-1minFront='-1'>
<AudioClip USE=' ReusableAudioClip'/>
</Sound>
<Sound DEF='SoundMaxNegativelocation='0 2 0maxBack='-10maxFront='-10'>
<AudioClip USE=' ReusableAudioClip'/>
</Sound>
<Sound DEF='SoundMinGreaterThanMaxlocation='0 2 0maxBack='11maxFront='11minBack='12minFront='12'>
<AudioClip USE=' ReusableAudioClip'/>
</Sound>
<Sound DEF='SoundMinGreaterThanDefaultMaxlocation='0 2 0minBack='13minFront='13'>
<AudioClip USE=' ReusableAudioClip'/>
</Sound>
<Sound DEF='SoundMaxLessThanDefaultMinlocation='0 2 0maxBack='0.5maxFront='0.5'>
<AudioClip USE=' ReusableAudioClip'/>
</Sound>
< ROUTE  fromNode=' DuplicateROUTE' fromField='test1' toNode=' test2' toField='test3'/>
< ROUTE  fromNode=' DuplicateROUTE' fromField='test1' toNode=' test2' toField='test3'/>
< ROUTE  fromNode=' DuplicateROUTE' fromField='test1' toNode=' test2' toField='test3'/>
< ROUTE  fromNode=' NodeFollowsRoute1' fromField='children' toNode=' NodeFollowsRoute2' toField='children'/>
<!-- ROUTE information for NodeFollowsRoute1 node:  [from children to NodeFollowsRoute2.children ] -->
<Group DEF='NodeFollowsRoute1'>
<!-- ROUTE information for NodeFollowsRoute2 node:  [from NodeFollowsRoute1.children to children ] -->
<Group DEF='NodeFollowsRoute2'>
<!-- silence warning -->
</Group>
</Group>
<Shape DEF='ElevationGridInsufficientHeights'>
<ElevationGrid solid='falsexSpacing='0zDimension='3zSpacing='0height='1 2 3 4 5'/>
</Shape>
<Shape DEF='ElevationGridTooManyHeights'>
<ElevationGrid solid='falsexSpacing='-1zDimension='3zSpacing='-1height='1 2 3 4 5 6 7'/>
</Shape>
<Shape DEF='ElevationGridBadDimensions'>
<ElevationGrid solid='falsexDimension='-2zDimension='-3height='1 2 3 4 5 6'/>
</Shape>
<StaticGroup DEF='StaticGroupChildTestscontainerField='children'>
<Group>
<TimeSensor DEF='StaticGroupDescendantsCannotProduceEvents'/>
<PositionInterpolator DEF='StaticGroupDescendantsCannotConsumeEvents'/>
<PositionInterpolator USE=' StaticGroupDescendantsCannotBeUsed'/>
</Group>
<!-- note mistake capitalization, correct form is ROUTE -->
<Route fromField='fraction_changedfromNode='StaticGroupDescendantsCannotProduceEventstoField='set_fractiontoNode='StaticGroupDescendantsCannotConsumeEvents'/>
</StaticGroup>
<Group DEF='CaseSensitive'>
<!-- test case sensitivity of DEF/USE -->
</Group>
<Group USE=' CASESENSITIVE'/>
<Group>
<TouchSensor DEF='PeerTouchSensor'/>
<CylinderSensor DEF='PeerCylinderSensor'/>
<Billboard DEF='PeerBillboard'/>
</Group>
<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" ' />

<Shape>
<IndexedFaceSet DEF='IfsEmptyChildren'>
<Coordinate DEF='EmptyCoordinate'/>
<Color DEF='EmptyColor'/>
<Normal DEF='EmptyNormal'/>
<TextureCoordinate DEF='EmptyTextureCoordinate'/>
</IndexedFaceSet>
</Shape>
<Shape>
<IndexedFaceSet DEF='IfsSingletonChildren'>
<Coordinate DEF='SingleCoordinatepoint='1 2 3'/>
<Color DEF='SingleColorcolor='0.1 0.2 0.3'/>
<Normal DEF='SingleNormalvector='0 1 0'/>
<TextureCoordinate DEF='SingleTextureCoordinatepoint='0.4 0.8'/>
</IndexedFaceSet>
</Shape>
<GeoLOD containerField='children'> </GeoLOD>
<TextureProjector/>
<TextureProjectorParallel DEF='DistanceMismatchIllegalFieldOfViewfarDistance='.1fieldOfView='1 2 3 4 5nearDistance='20'/>
</Scene>
</X3D>
<!--

Visualization reports for HAnimHumanoid models: JimDandy HAnimHumanoid Report, JimDandy HAnimHumanoid Report
to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- 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
-->
<!--

🔖 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' >
<!-- - illegal comment starts with extra hyphen - character -->
<!-- - illegal comment has intermediate paired-hyphen - - characters -->
<!-- test no other fields if USE present -->
<!-- no DEF name -->
<!-- no DEF name -->
<!-- bogus ROUTEs to allow trapping deeper error -->
<!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField"
protoField="isolatedConnectProtoField"/> -->

<!-- check for reserved word in name definitions -->
<!-- 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:

<HAnimHumanoid DEF='notUniqueName2' name='JimDandy' version ='2.0' >
  • <HAnimJoint DEF='' name='HumanoidRoot' containerField ='skeleton'  ulimit='0 0 0llimit='0 0 0'>
    • <HAnimJoint DEF='duplicateName2' name='sacroiliac'  ulimit='0 0 0llimit='0 0 0'> </HAnimJoint>
    • <HAnimJoint DEF='ImproperDEFname' name='l_acromioclavicular'  ulimit='0 0 0llimit='0 0 0'> </HAnimJoint>
    • <HAnimJoint DEF='hanim_HumanoidRoot' name='HumanoidRoot'  ulimit='0 0 0llimit='0 0 0'>
      <!-- TODO test IllegalEmbeddedHAnimUse in another HAnimHumanoid -->
      • <HAnimSegment DEF='JointNameSegmentNameHierarchyTest' name='notSacrum'>
        • <!-- Visualization sphere for <HAnimJoint name='HumanoidRoot'/> is placed within <HAnimSegment name='notSacrum'/> -->
          <TouchSensor description='HAnimJoint HumanoidRoot, HAnimSegment notSacrum'/>
        • <Transform translation='0 0 0'> <Shape USE='HAnimJointShape'/> </Transform>
        • <!-- HAnimSegment visualization line from current <HAnimJoint name='HumanoidRoot'/> to child <HAnimJoint name='negativeCenterHeight'/> -->
          <Shape> <LineSet vertexCount='2'> <Coordinate point='0 0 0, 0 -1 0'/> <ColorRGBA USE='HAnimSegmentLineColorRGBA'/> </LineSet> </Shape>
        • <!-- HAnimSegment visualization line from current <HAnimJoint name='HumanoidRoot'/> to child <HAnimJoint name='l_knee'/> -->
          <Shape> <LineSet vertexCount='2'> <Coordinate point='0 0 0, 1 2 3'/> <ColorRGBA USE='HAnimSegmentLineColorRGBA'/> </LineSet> </Shape>
        • <!-- HAnimSegment visualization line from current <HAnimJoint name='HumanoidRoot'/> to child <HAnimJoint name='r_knee'/> -->
          <Shape> <LineSet vertexCount='2'> <Coordinate point='0 0 0, 4 5 6'/> <ColorRGBA USE='HAnimSegmentLineColorRGBA'/> </LineSet> </Shape>
        • <!-- HAnimSegment visualization line from current <HAnimJoint name='HumanoidRoot'/> to child <HAnimJoint name=''/> -->
          <Shape> <LineSet vertexCount='2'> <Coordinate point='0 0 0, 0 0 0'/> <ColorRGBA USE='HAnimSegmentLineColorRGBA'/> </LineSet> </Shape>
        • <!-- HAnimSite/Viewpoint visualization line segment from ancestor <HAnimJoint name='HumanoidRoot'/> to <HAnimSite name='Top_view'/> -->
          <Shape> <LineSet vertexCount='2'> <Coordinate point='0 0 0, 0 3.5 0'/> <ColorRGBA DEF='HAnimSiteViewpointLineColorRGBA' color='1 1 0 1, 1 1 0 0.1'/> </LineSet> </Shape>
        • <HAnimSite DEF='hanim_Top_view' name='Top_view_pt' translation='0 3.5 0'containerField ='viewpoints' >
          • <!-- HAnimSite visualization shape -->
          • <TouchSensor description='HAnimSite Top_view'/>
          • <Shape USE='HAnimSiteShape'/>
          • <Viewpoint DEF='hanim_Top_viewpointcenterOfRotation='0 0.9 0description='Topposition='0 0 0'/>
          • <!-- 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>
      • <HAnimJoint DEF='negativeCenterHeight' name='negativeCenterHeight' center ='0 -1 0'  ulimit='0 0 0llimit='0 0 0'>
        • <HAnimSegment DEF='IllegalChildrenContainerFields' name='IllegalChildrenContainerFields'>
          • <!-- Visualization sphere for <HAnimJoint name='negativeCenterHeight'/> is placed within <HAnimSegment name='IllegalChildrenContainerFields'/> -->
            <TouchSensor description='HAnimJoint negativeCenterHeight, HAnimSegment IllegalChildrenContainerFields'/>
          • <Transform translation='0 -1 0'> <Shape USE='HAnimJointShape'/> </Transform>
          • <!-- HAnimSite visualization line segment from ancestor <HAnimJoint name='negativeCenterHeight'/> to <HAnimSite name='negativeTranslationHeight'/> -->
            <Shape> <LineSet vertexCount='2'> <Coordinate point='0 -1 0, 0 -1 0'/> <ColorRGBA USE='HAnimSiteColorRGBA'/> </LineSet> </Shape>
          • <HAnimSite DEF='negativeTranslationHeight' name='negativeTranslationHeight_pt' translation='0 -1 0'>
            • <!-- HAnimSite visualization shape -->
            • <TouchSensor description='HAnimSite negativeTranslationHeight'/>
            • <Shape USE='HAnimSiteShape'/>
            <HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode'/> </HAnimSite>
          </HAnimSegment>
        </HAnimJoint>
      </HAnimJoint>
    </HAnimJoint>
<!-- - illegal comment starts with extra hyphen - character -->
<!-- - illegal comment has intermediate paired-hyphen - - characters -->
<!-- test no other fields if USE present -->
<!-- no DEF name -->
<!-- no DEF name -->
<!-- bogus ROUTEs to allow trapping deeper error -->
<!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField"
protoField="isolatedConnectProtoField"/> -->

<!-- check for reserved word in name definitions -->
<!-- test of NeedsChildNode -->

<HAnimSite USE=' hanim_Top_viewcontainerField='viewpoints'/>
<HAnimSite USE=' hanim_Top_viewcontainerField='viewpoints'/>
<HAnimSegment USE=' JointNameSegmentNameHierarchyTestcontainerField='segments'/>
<HAnimSegment USE=' IllegalChildrenContainerFieldscontainerField='segments'/>
<!-- test for duplicated USE node -->
<HAnimSegment USE=' IllegalChildrenContainerFieldscontainerField='segments'/>
<HAnimJoint USE=' MissingComponentH-AnimLevel1containerField='joints'/>
<HAnimJoint USE=' MissingNameAttributeCheckContainerFieldcontainerField='joints'/>
<HAnimJoint USE=' duplicateName1containerField='joints'/>
<HAnimJoint USE=' duplicateName2containerField='joints'/>
<HAnimJoint USE=' ImproperDEFnamecontainerField='joints'/>
<HAnimJoint USE=' hanim_HumanoidRootcontainerField='joints'/>
<HAnimJoint USE=' negativeCenterHeightcontainerField='joints'/>
<HAnimJoint USE=' MismatchedJointCenter_l_kneecontainerField='joints'/>
<HAnimJoint USE=' MismatchedJointCenter_r_kneecontainerField='joints'/>
<HAnimSite USE=' hanim_Top_viewcontainerField='sites'/>
<HAnimSite USE=' negativeTranslationHeightcontainerField='sites'/>
<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.

Clock
TimeSensor
No ROUTE connection found for output from this node.
 


HasLegalCDATA
Script
No ROUTE connection found for output from this node.
 



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



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



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



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



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



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



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



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



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


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


DoubleDeclaration2
ProtoInstance
DoubleMixedDeclaration
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/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. -->