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.
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/XMLSchema" xmlns:xdr = "urn:schemas-microsoft-com:xml-data" xmlns:s = "namespace-for-this-schema" xmlns:dt = "urn:schemas-microsoft-com:datatypes"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:local="#local-functions"> <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()"/>
<!-- document converion template -->
<xsl:template match="/"> <xsl:comment> [XDR-XDS] This schema automatically updated from an IE5-compatible XDR schema to W3C XML Schema. </xsl:comment> <xsl:text disable-output-escaping="yes"><![CDATA[ <!DOCTYPE schema SYSTEM "xsd.dtd"> ]]></xsl:text> <xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="xdr:Schema"> <schema version="1.0"> <xsl:if test="@name"> <annotation> <documentation>Schema name: <xsl:value-of select="@name"/></documentation> </annotation> </xsl:if> <xsl:if test="*[not(self::xdr:*)]"> <annotation> <xsl:for-each select="*[not(self::xdr:*)]"> <appinfo> <xsl:copy-of select="."/> </appinfo> </xsl:for-each> </annotation> </xsl:if> <!-- BUGBUG not completed yet
<xsl:for-each select=".//s:attribute[contains(@type,':')] | .//s:element[contains(@type,':')]"> <import schemaLocation="{@type}"/> </xsl:for-each> --> <xsl:apply-templates select="node()"> <xsl:sort select="not(self::xdr:description)"/> </xsl:apply-templates> <xsl:comment> XDR datatype derivations </xsl:comment> <xsl:if test="//@dt:type='fixed.14.4'"> <simpleType name="fixed.14.4" base="decimal"> <scale value="4"/> <minInclusive value="-922337203685477.5808"/> <maxInclusive value="922337203685477.5807"/> </simpleType> </xsl:if> <xsl:if test="//@dt:type='bin.base64'"> <simpleType name="bin.base64" base="binary" > <encoding value="base64"/> <!---data encoded in Base64 notation --> </simpleType> </xsl:if> <xsl:if test="//@dt:type='bin.hex'"> <simpleType name="bin.hex" base="binary" > <encoding value="hex"/> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='boolean'"> <simpleType name="ISOBoolean" base="boolean"> <enumeration value="0"/> <!--False --> <enumeration value="1"/> <!--True --> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='char'"> <simpleType name="char" base="string"> <length value="1"/> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='i1'"> <simpleType name="i1" base="integer"> <minInclusive value="-128"/> <maxInclusive value="127"/> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='i2'"> <simpleType name="i2" base="integer"> <minInclusive value="-32768"/> <maxInclusive value="32767"/> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='i4'"> <simpleType name="i4" base="integer"> <minInclusive value="-2147483648"/> <maxInclusive value="2147483647"/> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='i8'"> <simpleType name="i8" base="integer"> <minInclusive value="-9223372036854775808"/> <maxInclusive value="9223372036854775807"/> </simpleType> </xsl:if> <xsl:if test="//@dt:type='ui1'"> <simpleType name="ui1" base="non-negative-integer"> <minInclusive value="0"/> <maxInclusive value="255"/> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='ui2'"> <simpleType name="ui2" base="non-negative-integer"> <minInclusive value="0"/> <maxInclusive value="65535"/> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='ui4'"> <simpleType name="ui4" base="non-negative-integer"> <minInclusive value="0"/> <maxInclusive value="4294967295"/> </simpleType> </xsl:if> <xsl:if test="//@dt:type='ui8'"> <simpleType name="ui8" base="non-negative-integer"> <minInclusive value="0"/> <maxInclusive value="18446744073709551615"/> </simpleType> </xsl:if> <xsl:if test="//@dt:type='r4'"> <simpleType name="r4" base="float"> <minInclusive value="-3.40282347E+38" /> <maxInclusive value="3.40282347E+38" /> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='date'"> <simpleType name="date" base="timeInstant"> <pattern value="\d*-\d\d-\d\d"/> <!---CCYY-MM-DD --> </simpleType> </xsl:if> <xsl:if test="//@dt:type='dateTime'"> <simpleType name="dateTime" base="timeInstant"> <pattern value="\d*-\d\d-\d\dT\d\d:\d\d(:\d\d(\.\d{{0,9}})?)?"/> <!---CCYY-MM-DDTHH:MM:SS.fffffffff Note no time zone. --> </simpleType> </xsl:if> <xsl:if test="//@dt:type='dateTime.tz'"> <simpleType name="dateTime.tz" base="timeInstant"> <pattern value="\d*-\d\d-\d\dT\d\d:\d\d(:\d\d(\.\d{{0,9}})?)?(\+|-)\d\d:\d\d"/> <!---CCYY-MM-DDTHH:MM:SS.fffffffff+HH:MM Note required time zone.--> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='time'"> <simpleType name="time" base="timeInstant"> <pattern value="\d\d:\d\d(:\d\d)?"/> <!---HH:MM:SS Note no time zone. --> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='time.tz'"> <simpleType name="time.tz" base="timeInstant"> <pattern value="\d\d:\d\d(:\d\d)?(\+|-)\d\d:\d\d"/> <!---HH:MM:SS+HH:MM Note required time zone --> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='Number'"> <simpleType name="Number" base="string"> <pattern value="(\+|-)?\d*(\.\d*)?((e|E)(\+|-)\d+)?" /> <!--contentValues>
<value>-Inf</value> <value>Inf</value> <value>*</value> </contentValues--> </simpleType> </xsl:if>
<xsl:if test="//@dt:type='uuid'"> <simpleType name="uuid" base="string"> <pattern value="[0-9A-F]{{8}}\-?[0-9A-F]{{4}}\-?[0-9A-F]{{4}}\-?[0-9A-F]{{4}}\-?[0-9A-F]{{12}}"/> </simpleType> </xsl:if>
</schema> </xsl:template>
<!-- element conversion templates -->
<xsl:template match="*" mode="ElementTypeContent"> <xsl:apply-templates select="xdr:description"/> <xsl:apply-templates select="xdr:element | xdr:group"/> </xsl:template>
<xsl:template match="xdr:ElementType[*]"> <element name="{@name}"> <xsl:if test="*[not(self::xdr:*)]"> <annotation> <xsl:for-each select="*[not(self::xdr:*)]"> <appinfo><xsl:copy-of select="."/></appinfo> </xsl:for-each> </annotation> </xsl:if> <complexType> <xsl:choose> <xsl:when test="@content='textOnly' or @content='empty' or @content='mixed'"> <xsl:apply-templates select="@content"/> <xsl:if test="@context='mixed' and (@order='one' or @order='seq')"> <xsl:comment> ****Warning!**** Original schema illegally combined content="mixed" and @order="<xsl:value-of select="@order"/>". Treating this as order='many' instead. </xsl:comment> </xsl:if> <xsl:apply-templates select="." mode="ElementTypeContent"/> </xsl:when> <xsl:when test="@content='eltOnly'"> <xsl:apply-templates select="@content"/> <xsl:choose> <xsl:when test="@order='one'"> <choice> <xsl:apply-templates select="." mode="ElementTypeContent"/> </choice> </xsl:when> <xsl:when test="@order='seq'"> <sequence> <xsl:apply-templates select="." mode="ElementTypeContent"/> </sequence> </xsl:when> <xsl:when test="@order='many'"> <choice minOccurs="0" maxOccurs="*"> <xsl:apply-templates select="." mode="ElementTypeContent"/> </choice> </xsl:when> <xsl:otherwise> <sequence> <xsl:apply-templates select="." mode="ElementTypeContent"/> </sequence> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="@order='one'"> <xsl:attribute name="content">elementOnly</xsl:attribute> <choice> <xsl:apply-templates select="." mode="ElementTypeContent"/> </choice> </xsl:when> <xsl:when test="@order='seq'"> <xsl:attribute name="content">elementOnly</xsl:attribute> <sequence> <xsl:apply-templates select="." mode="ElementTypeContent"/> </sequence> </xsl:when> <xsl:otherwise> <xsl:attribute name="content">mixed</xsl:attribute> <xsl:apply-templates select="." mode="ElementTypeContent"/> </xsl:otherwise> </xsl:choose> <xsl:if test="not(@model='closed')"> <any namespace="##other"/> </xsl:if> <xsl:apply-templates select="node()[not(self::xdr:element or self::xdr:group or self::xdr:description or self::xdr:datatype)]"/> </complexType> </element> </xsl:template>
<xsl:template match="xdr:ElementType"> <element name="{@name}"> <xsl:choose> <xsl:when test="@dt:type"> <xsl:apply-templates select="@dt:type"/> </xsl:when> <xsl:otherwise> <xsl:attribute name="type">string</xsl:attribute> </xsl:otherwise> </xsl:choose> <xsl:if test="node()"><xsl:apply-templates/></xsl:if> </element> </xsl:template>
<xsl:template match="xdr:element"> <element ref="{@type}"> <xsl:apply-templates select="@minOccurs | @maxOccurs"/> <xsl:if test="*[not(self::xdr:*)]"> <annotation> <xsl:for-each select="*[not(self::xdr:*)]"> <appinfo><xsl:copy-of select="."/></appinfo> </xsl:for-each> </annotation> </xsl:if> </element> </xsl:template>
<xsl:template match="xdr:AttributeType"/> <xsl:template match="xdr:attribute"> <attribute name="{@type}"> <xsl:variable name="definition" select="ancestor::*[xdr:AttributeType/@name = current()/@type][1]/xdr:AttributeType[@name = current()/@type]"/> <xsl:choose> <xsl:when test="@default"><xsl:apply-templates select="@default"/></xsl:when> <xsl:otherwise><xsl:apply-templates select="$definition/@default"/></xsl:otherwise> </xsl:choose> <xsl:choose> <xsl:when test="@required"><xsl:apply-templates select="@required"/></xsl:when> <xsl:otherwise><xsl:apply-templates select="$definition/@required"/></xsl:otherwise> </xsl:choose> <xsl:apply-templates select="$definition/@dt:type | $definition/xdr:datatype"/> <!-- description and annotations --> <xsl:if test="$definition/*[not(self::xdr:*)] | $definition/xdr:description"> <annotation> <xsl:for-each select="$definition/xdr:description"> <documentation><xsl:copy-of select="node()"/></documentation> </xsl:for-each> <xsl:for-each select="$definition/*[not(self::xdr:*)]"> <appinfo><xsl:copy-of select="."/></appinfo> </xsl:for-each> </annotation> </xsl:if> </attribute> </xsl:template>
<xsl:template match="xdr:description"/> <xsl:template match="xdr:description[1]"> <annotation> <!-- collect multiple descriptions into a single annotation --> <xsl:for-each select="../xdr:description"> <documentation><xsl:copy-of select="node()"/></documentation> </xsl:for-each> </annotation> </xsl:template>
<xsl:template match="xdr:group"> <xsl:variable name="inherited-order"> <xsl:choose> <xsl:when test="ancestor-or-self::group[@order]"> <xsl:value-of select="ancestor-or-self::group[@order]/@order"/> </xsl:when> <xsl:when test="ancestor::xdr:ElementType[@order]"> <xsl:value-of select="ancestor::xdr:ElementType[@order]/@order"/> </xsl:when> <xsl:when test="ancestor::xdr:ElementType/@content='eltOnly'">seq</xsl:when> <xsl:otherwise>many</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="group-name"> <xsl:choose> <xsl:when test="$inherited-order='one'">choice</xsl:when> <xsl:when test="$inherited-order='seq'">sequence</xsl:when> <xsl:when test="$inherited-order='many'">choice</xsl:when> </xsl:choose> </xsl:variable> <xsl:element name="{$group-name}"> <xsl:choose> <xsl:when test="$group-name='many'"> <xsl:attribute name="minOccurs">0</xsl:attribute> <xsl:attribute name="maxOccurs">*</xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="@minOccurs | @maxOccurs"/> </xsl:otherwise> </xsl:choose> <xsl:if test="*[not(self::xdr:*)] | xdr:description"> <annotation> <xsl:for-each select="xdr:description"> <documentation><xsl:copy-of select="node()"/></documentation> </xsl:for-each> <xsl:for-each select="*[not(self::xdr:*)]"> <appinfo><xsl:copy-of select="."/></appinfo> </xsl:for-each> </annotation> </xsl:if> <xsl:apply-templates select="xdr:*[not(self::xdr:description)]"/> </xsl:element> </xsl:template>
<!-- attribute conversion templates -->
<xsl:template match="@*"/>
<xsl:template match="@content"> <xsl:attribute name="content"><xsl:value-of select="."/></xsl:attribute> </xsl:template>
<xsl:template match="@content[.='eltOnly']"> <xsl:attribute name="content">elementOnly</xsl:attribute> </xsl:template>
<xsl:template match="@minOccurs | @maxOccurs"> <xsl:copy><xsl:value-of select="."/></xsl:copy> </xsl:template>
<xsl:template match="@default"> <xsl:attribute name="fixed"><xsl:value-of select="."/></xsl:attribute> </xsl:template>
<xsl:template match="@required[.='yes']"> <xsl:attribute name="minOccurs">1</xsl:attribute> </xsl:template>
<!-- Data type attribute/element conversions -->
<xsl:template match="@dt:type"> <xsl:attribute name="type"><xsl:value-of select="."/></xsl:attribute> </xsl:template> <xsl:template match="xdr:datatype"> <xsl:attribute name="type"><xsl:value-of select="@dt:type"/></xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='id'] | xdr:datatype[@dt:type='id']"> <xsl:attribute name="type">ID</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='idref'] | xdr:datatype[@dt:type='idref']"> <xsl:attribute name="type">IDREF</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='idrefs'] | xdr:datatype[@dt:type='idrefs']"> <xsl:attribute name="type">IDREFS</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='entity'] | xdr:datatype[@dt:type='entity']"> <xsl:attribute name="type">ENTITY</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='entities'] | xdr:datatype[@dt:type='entities']"> <xsl:attribute name="type">ENTITIES</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='nmtoken'] | xdr:datatype[@dt:type='nmtoken']"> <xsl:attribute name="type">NMTOKEN</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='nmtokens'] | xdr:datatype[@dt:type='nmtokens']"> <xsl:attribute name="type">NMTOKENS</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='notation'] | xdr:datatype[@dt:type='notation']"> <xsl:attribute name="type">NOTATION</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='int'] | xdr:datatype[@dt:type='int']"> <xsl:attribute name="type">integer</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='r8'] | xdr:datatype[@dt:type='r8']"> <xsl:attribute name="type">double</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='boolean'] | xdr:datatype[@dt:type='boolean']"> <xsl:attribute name="type">ISOBoolean</xsl:attribute> </xsl:template>
<xsl:template match="@dt:type[.='enumeration']"> <simpleType base="NMTOKEN"> <xsl:value-of select="local:formatEnum(string(../@dt:values))" disable-output-escaping="yes"/> </simpleType> </xsl:template> <xsl:template match="xdr:datatype[@dt:type='enumeration']"> <simpleType base="NMTOKEN"> <xsl:value-of select="local:formatEnum(string(@dt:values))" disable-output-escaping="yes"/> </simpleType> </xsl:template>
<msxsl:script language="JScript" implements-prefix="local"><![CDATA[ function formatEnum(e) { // trim trailing spaces while (e.charAt(e.length - 1) == " ") e = e.substring(0, e.length - 1); var re = new RegExp("\\s+", "g"); e = e.replace(re, "'/> <enumeration value='"); return "<enumeration value='" + e + "'/>\n"; } ]]></msxsl:script>
</xsl:stylesheet>
|