G Ken Holman Play Ball with SVG and XSLT
>> YOUR LINK HERE: ___ http://youtube.com/watch?v=MnV4_hbn5qI
This is a case study of how I apply XSLT to SVG XML input in the creation and production of a playable dice and pegs game I am using to teach the basic rules of Major League Baseball to my grandchildren. The techniques developed can be applied wherever SVG layers need to be shared and re-used. The stylesheets and complete board game results are freely available on the Crane Softwrights GitHub account for anyone to use and to play. Questions regarding the rules of baseball are welcomed, but such answers are limited to the knowledge of just one enthusiastic fair-weather fan. • Ken is an armchair baseball enthusiast and with his wife a co-founder of Crane Softwrights Ltd. who has provided consulting and training services in markup technologies since 1997. In his retirement he continues to travel the world speaking at conferences and volunteering in international standards committees, in transnational health services, and in NGO humanitarian efforts in Africa. Ask him about baseball, XML/XSLT, or OASIS UBL and he will talk your ear off.","styleRuns":[{"startIndex":0,"length":1047,"styleRunExtensions":{"styleRunColorMapExtension":{"colorMap":[{"key":"USER_INTERFACE_THEME_DARK","value":4294967295},{"key":"USER_INTERFACE_THEME_LIGHT","value":4279440147}]}},"fontFamilyName":"Roboto"}]},"headerRuns":[{"startIndex":0,"length":1047,"headerMapping":"ATTRIBUTED_STRING_HEADER_MAPPING_UNSPECIFIED"}]}},{"itemSectionRenderer":{"contents":[{"continuationItemRenderer":{"trigger":"CONTINUATION_TRIGGER_ON_ITEM_SHOWN","continuationEndpoint":{"clickTrackingParams":"COMBELsvGAIiEwj5v6-VurKKAxW-WnoFHeVQLeU=","commandMetadata":{"webCommandMetadata":{"sendPost":true,"apiUrl":"/youtubei/v1/next"}},"continuationCommand":{"token":"Eg0SC01uVjRfaGJuNXFJGAYyJSIRIgtNblY0X2hibjVxSTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D","request":"CONTINUATION_REQUEST_TYPE_WATCH_NEXT"}}}}],"trackingParams":"COMBELsvGAIiEwj5v6-VurKKAxW-WnoFHeVQLeU=","sectionIdentifier":"comment-item-section","targetId":"comments-section"}}],"trackingParams":"COIBELovIhMI-b-vlbqyigMVvlp6BR3lUC3l"}},"secondaryResults":{"secondaryResults":{"results":[{"lockupViewModel":{"contentImage":{"thumbnailViewModel":{"image":{"sources":[{"url":"https://i.ytimg.com/vi/q8p0XIiytDA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG rs=AOn4CLBfSt0njsGMN0pfje8zLT59QheREA","width":168,"height":94},{"url":"https://i.ytimg.com/vi/q8p0XIiytDA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg== rs=AOn4CLCNDHfCrBv7cxouU7RnMrt3JYkbRA","width":336,"height":188}]},"overlays":[{"thumbnailOverlayBadgeViewModel":{"thumbnailBadges":[{"thumbnailBadgeViewModel":{"text":"33:12","badgeStyle":"THUMBNAIL_OVERLAY_BADGE_STYLE_DEFAULT","animationActivationTargetId":"q8p0XIiytDA","animationActivationEntityKey":"Eh8veW91dHViZS9hcHAvd2F0Y2gvcGxheWVyX3N0YXRlIMMCKAE%3D","lottieData":{"url":"https://www.gstatic.com/youtube/img/lottie/audio_indicator/audio_indicator_v2.json","settings":{"loop":true,"autoplay":true}},"animatedText":"Wordt nu afgespeeld","animationActivationEntitySelectorType":"THUMBNAIL_BADGE_ANIMATION_ENTITY_SELECTOR_TYPE_PLAYER_STATE","rendererContext":{"accessibilityContext":{"label":"33 minuten en 12 seconden"}}}}],"position":"THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END"}},{"animatedThumbnailOverlayViewModel":{"thumbnail":{"sources":[{"url":"https://i.ytimg.com/an_webp/q8p0XIiytDA/mqdefault_6s.webp?du=3000 sqp=CICrjbsG rs=AOn4CLC1biGifVju8I-m0MG9a6cYTv9-nQ","width":320,"height":180}]}}},{"thumbnailHoverOverlayToggleActionsViewModel":{"buttons":[{"toggleButtonViewModel":{"defaultButtonViewModel":{"buttonViewModel":{"iconName":"WATCH_LATER","onTap":{"innertubeCommand":{"clickTrackingParams":"COEBEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","commandMetadata":{"webCommandMetadata":{"sendPost":true,"apiUrl":"/youtubei/v1/browse/edit_playlist"}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":"q8p0XIiytDA","action":"ACTION_ADD_VIDEO"}]}}},"accessibilityText":"Later bekijken","style":"BUTTON_VIEW_MODEL_STYLE_OVERLAY_DARK","trackingParams":"COEBEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","type":"BUTTON_VIEW_MODEL_TYPE_TONAL","buttonSize":"BUTTON_VIEW_MODEL_SIZE_COMPACT","state":"BUTTON_VIEW_MODEL_STATE_ACTIVE"}},"toggledButtonViewModel":{"buttonViewModel":{"iconName":"CHECK","onTap":{"innertubeCommand":{"clickTrackingParams":"COABEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","commandMetadata":{"webCommandMetadata":{"sendPost":true,"apiUrl":"/youtubei/v1/browse/edit_playlist"}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"action":"ACTION_REMOVE_VIDEO_BY_VIDEO_ID","removedVideoId":"q8p0XIiytDA"}]}}},"accessibilityText":"Toegevoegd","style":"BUTTON_VIEW_MODEL_STYLE_OVERLAY_DARK","trackingParams":"COABEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","type":"BUTTON_VIEW_MODEL_TYPE_TONAL","buttonSize":"BUTTON_VIEW_MODEL_SIZE_COMPACT","state":"BUTTON_VIEW_MODEL_STATE_ACTIVE"}},"isToggled":false,"trackingParams":"CNoBENTEDBgAIhMI-b-vlbqyigMVvlp6BR3lUC3l"}},{"toggleButtonViewModel":{"defaultButtonViewModel":{"buttonViewModel":{"iconName":"ADD_TO_QUEUE_TAIL","onTap":{"innertubeCommand":{"clickTrackingParams":"CN8BEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","commandMetadata":{"webCommandMetadata":{"sendPost":true}},"signalServiceEndpoint":{"signal":"CLIENT_SIGNAL","actions":[{"clickTrackingParams":"CN8BEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","addToPlaylistCommand":{"openMiniplayer":false,"openListPanel":true,"videoId":"q8p0XIiytDA","listType":"PLAYLIST_EDIT_LIST_TYPE_QUEUE","onCreateListCommand":{"clickTrackingParams":"CN8BEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","commandMetadata":{"webCommandMetadata":{"sendPost":true,"apiUrl":"/youtubei/v1/playlist/create"}},"createPlaylistServiceEndpoint":{"videoIds":["q8p0XIiytDA"],"params":"CAQ%3D"}},"videoIds":["q8p0XIiytDA"],"videoCommand":{"clickTrackingParams":"CN8BEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","commandMetadata":{"webCommandMetadata":{"url":"/watch?v=q8p0XIiytDA","webPageType":"WEB_PAGE_TYPE_WATCH","rootVe":3832}},"watchEndpoint":{"videoId":"q8p0XIiytDA","watchEndpointSupportedOnesieConfig":{"html5PlaybackOnesieConfig":{"commonConfig":{"url":"https://rr4---sn-5hne6nsr.googlevideo.com/initplayback?source=youtube oeis=1 c=WEB oad=3200 ovd=3200 oaad=11000 oavd=11000 ocs=700 oewis=1 oputc=1 ofpcc=1 msp=1 odepv=1 id=abca745c88b2b430 ip=185.14.28.206 mt=1734561742 oweuc="}}}}}}}]}}},"accessibilityText":"Toevoegen aan wachtrij","style":"BUTTON_VIEW_MODEL_STYLE_OVERLAY_DARK","trackingParams":"CN8BEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","type":"BUTTON_VIEW_MODEL_TYPE_TONAL","buttonSize":"BUTTON_VIEW_MODEL_SIZE_COMPACT","state":"BUTTON_VIEW_MODEL_STATE_ACTIVE"}},"toggledButtonViewModel":{"buttonViewModel":{"iconName":"CHECK","accessibilityText":"Toegevoegd","style":"BUTTON_VIEW_MODEL_STYLE_OVERLAY_DARK","trackingParams":"CN4BEPBbIhMI-b-vlbqyigMVvlp6BR3lUC3l","type":"BUTTON_VIEW_MODEL_TYPE_TONAL","buttonSize":"BUTTON_VIEW_MODEL_SIZE_COMPACT","state":"BUTTON_VIEW_MODEL_STATE_ACTIVE"}},"isToggled":false,"trackingParams":"CNoBENTEDBgAIhMI-b-vlbqyigMVvlp6BR3lUC3l"}}]}}]}},"metadata":{"lockupMetadataViewModel":{"title":{"content":"Erik Siegel - DSL engines running on XProc"},"image":{"decoratedAvatarViewModel":{"avatar":{"avatarViewModel":{"image":{"sources":[{"url":"https://yt3.ggpht.com/ytc/AIdro_kD6qAYseoT63GJ64v5lkknge8ubzXwgYKAZe3fRpm5Qg=s68-c-k-c0x00ffffff-no-rj","width":68,"height":68}]},"avatarImageSize":"AVATAR_SIZE_M"}},"a11yLabel":"Naar kanaal gaan","rendererContext":{"commandContext":{"onTap":{"innertubeCommand":{"clickTrackingParams":"CNoBENTEDBgAIhMI-b-vlbqyigMVvlp6BR3lUC3l","commandMetadata":{"webCommandMetadata":{"url":"/@declarativeamsterdam","webPageType":"WEB_PAGE_TYPE_CHANNEL","rootVe":3611,"apiUrl":"/youtubei/v1/browse"}},"browseEndpoint":{"browseId":"UC7rwH-GyCWibReG7B5Q4Hiw","canonicalBaseUrl":"/@declarativeamsterdam"}}}}}}},"metadata":{"contentMetadataViewModel":{"metadataRows":[{"metadataParts":[{"text":{"content":"Declarative Amsterdam
#############################