Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

180 lines
5.9 KiB

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!-- Copyright (c) Microsoft Corporation. All rights reserved. -->
<xsl:script language="VBScript"><![CDATA[
Option Explicit
'This stylesheet formats DMTF XML encoded CIM objects into a tabular
'format using carriage returns and space characters only.
Dim sPXML
Dim propname(128)
Dim lenarr(128)
Dim bN(128)
Dim iLens
Dim iLensMax
Dim propvalue(2048, 128)
Dim iRow
iRow = -1
Dim iResultCount
Function CountResults(n)
iResultCount = iResultCount + 1
End Function
Function PadIt(ilen)
Dim i
Dim pads
i = ilen + 2
pads = " "
while (i > len(pads))
pads = pads & pads
wend
PadIt = Left(pads, i)
End Function
Function GotInstance()
iLensMax = iLens
iLens = 0
iRow = iRow + 1
End Function
Function GetValues(n)
Dim child, iNum, i, strType
If iRow = 0 Then
'this is the first row - set up the headers
propname(iLens) = Me.Attributes.GetNamedItem("NAME").Value
Else
If propname(iLens) <> Me.Attributes.GetNamedItem("NAME").Value Then
'This is going to be messy - Find it or add it on the end
End If
End If
If strcomp(Me.NodeName,"Property.Array",1) = 0 Then
if (Me.hasChildNodes) then
propvalue(iRow, iLens) = "{"
iNum = Me.FirstChild.ChildNodes.Length
i = 1
strType = Me.attributes.getNamedItem("TYPE").nodeValue
For each child in Me.FirstChild.ChildNodes
if (strType = "string") then
propvalue(iRow, iLens) = propvalue(iRow, iLens) & """" & child.nodeTypedValue & """"
elseif (strType = "char16") then
propvalue(iRow, iLens) = propvalue(iRow, iLens) & "'" & child.nodeTypedValue & "'"
else
propvalue(iRow, iLens) = propvalue(iRow, iLens) & child.nodeTypedValue
end if
if (i <> iNum) then
propvalue(iRow, iLens) = propvalue(iRow, iLens) & ", "
end if
i = i + 1
Next
propvalue(iRow, iLens) = propvalue(iRow, iLens) & "}"
end if
ElseIf strcomp(Me.NodeName,"Property.Reference",1) = 0 Then
dim valref, node, hostnode, localnamespace, namespacenode, keybindings, keybinding
for each valref in Me.selectNodes("VALUE.REFERENCE")
for each node in valref.selectNodes(".//NAMESPACEPATH")
set hostnode = node.selectsinglenode("HOST")
if not hostnode is nothing then
propvalue(irow, ilens) = "\\" & hostnode.text
end if
set localnamespace = node.selectsinglenode("LOCALNAMESPACEPATH")
if not localnamespace is nothing then
for each namespacenode in localnamespace.selectnodes("NAMESPACE")
propvalue(irow,ilens) = propvalue(irow,ilens) & "\" & namespacenode.attributes.getNamedItem("NAME").nodeValue
next
end if
propvalue(irow,ilens) = propvalue(irow,ilens) & ":"
next
for each node in valref.selectNodes(".//INSTANCENAME")
propvalue(irow,ilens) = propvalue(irow,ilens) & node.attributes.getNamedItem("CLASSNAME").nodevalue
set keybindings = node.selectnodes("KEYBINDING")
i = 0
for each keybinding in keybindings
i = i + 1
if (i = 1) then
propvalue(irow,ilens) = propvalue(irow,ilens) & "."
end if
propvalue(irow,ilens) = propvalue(irow,ilens) & keybinding.attributes.getnameditem("NAME").nodeValue & "=""" & _
keybinding.selectsinglenode("KEYVALUE").text & """"
if (i <> keybindings.length) then
propvalue(irow,ilens) = propvalue(irow,ilens) & ","
end if
next
next
next
Else
propvalue(iRow, iLens) = replace(replace(Me.nodeTypedValue, vbCr, ""), vbLF, "")
End If
iLens = iLens + 1
End Function
Function DisplayValues(n)
Dim sT
Dim sV
Dim i
Dim j
Dim k
'Determine the column widths
'look at the column headers first
iLensMax = iLens
iLens = 0
iRow = iRow + 1
i = 0
While i < iLensMax
k = getlength(propname(i))
If k > lenarr(i) Then
lenarr(i) = k
End If
i = i + 1
Wend
'look at the values
i = 0
While i < iRow
j = 0
While j < iLensMax
k = getlength(propvalue(i, j))
If k > lenarr(j) Then
lenarr(j) = k
End If
j = j + 1
Wend
i = i + 1
Wend
'set up the column headers
i = 0
While i < iLensMax
j = lenarr(i) - getlength(propname(i))
sT = sT & propname(i) & PadIt(j)
i = i + 1
Wend
i = 0
While i < iRow
j = 0
While j < iLensMax
k = lenarr(j) - getlength(propvalue(i, j))
if bN(j)= 1 then
sV = sV & PadIt(k-2) & propvalue(i, j) & " "
Else
sV = sV & propvalue(i, j) & PadIt(k)
End If
j = j + 1
Wend
sV = sV & vbCrLf
i = i + 1
Wend
DisplayValues = sT & vbCrLf & sV
End Function
Function GetLength(str)
Dim i, ch
'we have to manually compute length
GetLength = 0
For i = 1 to len(str)
ch = ascw(mid(str,i,1))
if (ch > 255) or (ch < 0) then
GetLength = GetLength + 2 'assume two byte spaces
else
GetLength = GetLength + 1
end if
Next
End Function
]]></xsl:script>
<xsl:template match="/"><xsl:apply-templates select="//RESULTS"/><xsl:apply-templates select="//INSTANCE"/><xsl:eval no-entities="true" language="VBScript">DisplayValues(this)</xsl:eval></xsl:template>
<xsl:template match="RESULTS"><xsl:eval no-entities="true" language="VBScript">CountResults(this)</xsl:eval></xsl:template>
<xsl:template match="INSTANCE"><xsl:eval language="VBScript">GotInstance()</xsl:eval><xsl:apply-templates select="PROPERTY|PROPERTY.ARRAY|PROPERTY.REFERENCE"/></xsl:template>
<xsl:template match="PROPERTY|PROPERTY.ARRAY|PROPERTY.REFERENCE"><xsl:eval no-entities="true" language="VBScript">GetValues(this)</xsl:eval></xsl:template>
</xsl:stylesheet>