There is more than one way to "skin" this cat.
At Adski's suggestion, I looked at John Mitchell's technique for including custom .js files by defining them in your HTML skins. This works well for JavaScripts but John suggests that you could also include .css files using a LINK tag. The problem is that per XHTML, LINK tags must self-close. John's technique will render but not validate. Here is how I got both js and css includes AND without breaking XHTML rules.
I add this to the top of my HTML skin.
<script runat="server">
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
Dim header As Web.UI.HtmlControls.HtmlHead
header = TryCast(Me.Page.Header, Web.UI.HtmlControls.HtmlHead)
If header IsNot Nothing Then
' First CSS Include
Dim oLink As New HtmlLink
oLink.Attributes.Add("rel", "stylesheet")
oLink.Attributes.Add("type", "text/css")
oLink.Attributes.Add("media", "screen")
oLink.Attributes.Add("href", SkinPath & "yui/build/reset-fonts-grids/reset-fonts-grids.css")
header.Controls.Add(oLink)
' Second/Third/Etc CSS Include
oLink = New HtmlLink
oLink.Attributes.Add("rel", "stylesheet")
oLink.Attributes.Add("type", "text/css")
oLink.Attributes.Add("media", "screen")
oLink.Attributes.Add("href", SkinPath & "yui/build/button/assets/skins/sam/button.css")
header.Controls.Add(oLink)
' First JavaScript Include
Dim oScript As New HtmlGenericControl("script")
oScript.Attributes("type") = "text/javascript"
oScript.Attributes("src") = SkinPath & "yui/build/yahoo-dom-event/yahoo-dom-event.js"
header.Controls.Add(oScript)
' Second/Third/Etc JavaScript Include
oScript = New HtmlGenericControl("script")
oScript.Attributes("type") = "text/javascript"
oScript.Attributes("src") = SkinPath & "yui/build/animation/animation-min.js"
header.Controls.Add(oScript)
End If
End Sub
</script>
Note that HtmlGenericControl will not self-close but HtmlLink will. SCRIPT tags can close with </script> but LINK tags must self-close like <link />. Thus you'll stay XHTML compliant.
I hope this helps someone else down the road. Thanks to Adski and John Mitchell.
~ Garth